We need to consider two scenarios here.
1. External system act as a client to ESB.
Eg:- SOAP UI invoking ESB proxy
2. External system is a server to ESB.
EG:- ESB invoking external service
Following image depicts all certificate exchange steps to cater above scenarios.
Friday, February 19, 2016
Wednesday, February 17, 2016
how to import a private key in to JKS
Lets take following scenario where you implement an application based on asymmetric cipher (Eg:- RSA). Assume you are responsible for the decryption part, where you have to use the given private key to handle this.
Probably you will get only the private key or private key and the certificate. I'm going to take the first instance assuming you have only the private key.
Note :- assume name of the private key is private_key.pem
1. Create a certificate sign request using the given private key.
Self-sign:
If you already have java key store configured within your application, let's merge above tmp_keystore.jks with the existing key store.
Probably you will get only the private key or private key and the certificate. I'm going to take the first instance assuming you have only the private key.
Note :- assume name of the private key is private_key.pem
1. Create a certificate sign request using the given private key.
openssl req -new -key private_key.pem -out key_cert_r.csr2. Get the certificate signed by an authorized party/self-sign.
Self-sign:
openssl x509 -req -days 365 -in key_cert_r.csr -signkey private_key.pem -out key_cert.crt3. Generate a pkc12 key store using the private key and above certificate.
openssl pkcs12 -export -name alias -in key_cert.crt -inkey private_key.pem -out keystore.p124. Generate a java key-store using above pkc12 keystore.
keytool -importkeystore -destkeystore tmp_keystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias alias
If you already have java key store configured within your application, let's merge above tmp_keystore.jks with the existing key store.
keytool -importkeystore -destkeystore existing_keystore.jks -srckeystore tmp_keystore.jks
Sunday, February 7, 2016
SVN cheat sheet
This is not the place to learn SVN commands, I'm just creating this as a reference to some important commands.
Revert local file change
svn revert <file_name>
Take a diff from two revisions
svn diff -r <old_revision>:<new_revision>
Update to the latest revision
svn update "<path>"
Update to a specific revision
svn update -<revision_number> "<path>"
Add new files/directory to track
svn add <file_name>|<directory_name>
Delete with a message
svn -m "<messahe>" delete "<path>"
Revert local file change
svn revert <file_name>
Take a diff from two revisions
svn diff -r <old_revision>:<new_revision>
Update to the latest revision
svn update "<path>"
Update to a specific revision
svn update -<revision_number> "<path>"
Add new files/directory to track
svn add <file_name>|<directory_name>
Delete with a message
svn -m "<messahe>" delete "<path>"
Saturday, January 30, 2016
Build Carbon Application(capp) for WSO2 DAS
You need to work with multiple artifact types while working with WSO2 DAS. Following is a list of artifacts supported in WSO2 DAS, (Tried both DAS 3.0.0 and 3.0.1)
- Event Streams
- Event Stores
- Even Receivers
- Analytic Scripts
- Execution Plans
- Gadgets
- Layouts
- Dashboards
Rather than deploying these artifacts one by one we can deploy a set of artifacts using a single deployable artifact, Carbon Application (capp)[1]. Here what we do is, create an archive with .car extension and deploy using management console.
But there can be usecases where we need to build above archive programmatically, using a build tool. Here I’m using Maven to fulfil above requirement.
Assume we have all artifacts within das-capp directory,
.
├── das-capp
│ ├── artifacts.xml
│ ├── Dashboard_1.0.0
│ ├── Eventreceiver_1.0.0
│ ├── Eventstore_1.0.0
│ ├── Eventstream_1.0.0
│ ├── GadgetTotalDailyViews_1.0.0
│ ├── GadgetViewsPreviousmonth_1.0.0
│ ├── GagdetPageFilter_1.0.0
│ ├── Layout_1.0.0
│ └── Sparkscripts_1.0.0
└── pom.xml
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><groupId>org.wso2.das.example</groupId><artifactId>das-capp</artifactId><version>1.0.0-SNAPSHOT</version><packaging>pom</packaging><name>DAS CAR</name><description>This project contains artifacts to process and display sample capp</description><properties><artifact.types>jaggery/app=zip,service/rule=aar,lib/library/bundle=jar,event/receiver=xml,synapse/message-processors=xml,synapse/endpointTemplate=xml,synapse/message-store=xml,synapse/proxy-service=xml,event/execution-plan=siddhiql,carbon/application=car,registry/resource=zip,lib/dataservice/validator=jar,synapse/endpoint=xml,web/application=war,synapse/inbound-endpoint=xml,synapse/sequence=xml,synapse/configuration=xml,lib/registry/handlers=jar,synapse/task=xml,service/meta=xml,webapp/jaxws=war,synapse/api=xml,synapse/lib=zip,bpel/workflow=zip,lib/registry/filter=jar,service/dataservice=dbs,event/publisher=xml,synapse/local-entry=xml,synapse/priority-executor=xml,synapse/event-source=xml,synapse/template=xml,event/stream=json,lib/carbon/ui=jar,service/axis2=aar,synapse/sequenceTemplate=xml,wso2/gadget=dar,lib/synapse/mediator=jar</artifact.types></properties><build><pluginManagement><plugins><plugin><artifactId>maven-antrun-plugin</artifactId><version>1.7</version></plugin></plugins></pluginManagement><plugins><plugin><artifactId>maven-antrun-plugin</artifactId><executions><execution><phase>process-resources</phase><goals><goal>run</goal></goals><configuration><tasks><zip destfile="target/das-example.car"><zipfileset dir="das-capp" /></zip></tasks></configuration></execution></executions></plugin></plugins></build></project>
You can build above using mvn clean install and find the capp artifact within target/ directory. Then we can upload this deployable artifact to WSO2 DAS using management console.
[1] https://docs.wso2.com/display/DAS301/Packaging+Artifacts+as+a+C-App+Archive
Thursday, January 28, 2016
Configure WSO2 server to start automatically after reboot
I have tested following within a RHEL box, but with a slight modification to the run-level, same script can be used within other Linux distros.
Assume we have WSO2 DAS server within /carbon/wso2/das directory and JDK installed in /carbon/java/ directory. Make sure to update these two according to your environment.
1. Copy following startup-script to the /etc/init.d directory.
2. Execute chmod a+x and a+r on the script.
3. Set run level using "sudo chkconfig dasserver on"
4. Recheck above using "chkconfig --list dasserver" This should output ,
Assume we have WSO2 DAS server within /carbon/wso2/das directory and JDK installed in /carbon/java/ directory. Make sure to update these two according to your environment.
1. Copy following startup-script to the /etc/init.d directory.
2. Execute chmod a+x and a+r on the script.
3. Set run level using "sudo chkconfig dasserver on"
4. Recheck above using "chkconfig --list dasserver" This should output ,
"dasserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off"Startup script
#! /bin/sh
#
# dasserver Start up the WSO2 DAS server
#
# chkconfig: 2345 55 25
# description: WSO2 Data Analytics Server is a comprehensive enterprise data analytics platform.
export JAVA_HOME="/carbon/java/jdk1.8.0_65"
startcmd='/carbon/wso2/das/wso2das-3.0.0/bin/wso2server. sh start > /dev/null &'
restartcmd='/carbon/wso2/das/wso2das-3.0.0/bin/wso2server. sh restart > /dev/null &'
stopcmd='/carbon/wso2/das/wso2das-3.0.0/bin/wso2server. sh stop > /dev/null &'
case "$1" in
start)
echo "Starting the WSO2 DAS Server ..."
su -c "${startcmd}" wso2usr
;;
restart)
echo "Re-starting the WSO2 DAS Server ..."
su -c "${restartcmd}" wso2usr
;;
stop)
echo "Stopping the WSO2 DAS Server ..."
su -c "${stopcmd}" wso2usr
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
Sunday, June 7, 2015
How to persist resolv.conf modifications
Default resolv.conf in my Ubuntu box is as follows,
I can achieve this by modifying above resolv.conf, but that change won't persists after Ubuntu box restart, networking restart or my router restart.
How to persist my change,
Open /etc/network/interfaces using your favorite text editor, in my case it's vi :)
Eg:-
Note:- I tried different alternatives like update resolv.conf using a bash script during server restart, adding immutable characteristic to resolv.conf using chattr tool. But above is the only viable solution I can recommend to someone.
udara@udara-home:~$ cat /etc/resolv.confAssume a scenario where I need to use a different DNS.. Eg: -google dns- 8.8.8.8
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
I can achieve this by modifying above resolv.conf, but that change won't persists after Ubuntu box restart, networking restart or my router restart.
How to persist my change,
Open /etc/network/interfaces using your favorite text editor, in my case it's vi :)
sudo vi /etc/network/interfacesUpdate /etc/network/interfaces according to your preference. You can append dns-nameservers 8.8.8.8 to the end.
Eg:-
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
dns-nameservers 8.8.8.8
Note:- I tried different alternatives like update resolv.conf using a bash script during server restart, adding immutable characteristic to resolv.conf using chattr tool. But above is the only viable solution I can recommend to someone.
Tuesday, June 2, 2015
Git merge to restore lost commit
Lets start from a status like following,
When we issue the git reset command, commit goes to dangling state and commit is not going to remove permanently. luckily !!
IMPORTANT:
Make sure you don't run git gc until you restore the lost commit. git gc command will trigger the garbage collector and remove all commits which are in dangling state.
Let's start the restoring process....
1. We need to find the SHA1 of the deleted commit so we can bring it back.
2. Lets merge this commit.
udara@udara-home:~/workspace/USSD-Reminder$ git statusSo here my local branch is one commit ahead from the remote. Assume mistakenly I did a git reset --hard HEAD^. This will remove my last commit and now I need to find a way to undo my last command.
# On branch new-feature
# Your branch is ahead of 'origin/new-feature' by 1 commit.
# (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
When we issue the git reset command, commit goes to dangling state and commit is not going to remove permanently. luckily !!
IMPORTANT:
Make sure you don't run git gc until you restore the lost commit. git gc command will trigger the garbage collector and remove all commits which are in dangling state.
Let's start the restoring process....
1. We need to find the SHA1 of the deleted commit so we can bring it back.
git fsck --lost-foundgit fsck command will list down all commits which are in dangling state.
udara@udara-home:~/workspace/USSD-Reminder$ git fsck --lost-foundSo we have the SHA1 of the commit which needs to restore.
Checking object directories: 100% (256/256), done.
Checking objects: 100% (16/16), done.
dangling commit 5e3079cc8ac9e15cbfc1f513d249678c0893feab
2. Lets merge this commit.
git merge <SHA1>
udara@udara-home:~/workspace/USSD-Reminder$ git merge 5e3079cc8ac9e15cbfc1f513d249678c0893feabNow if we run the git status command it should mention that my local branch is one commit ahead than the remote.
Updating 0ffdab3..5e3079c
Fast-forward
config.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Subscribe to:
Posts (Atom)

