September 9, 2010
June 20, 2010
Internet Dial Up Connection Sharing
Ini comment dikit tapi suka lupa, jarang kepake sih.. ![]()
Ditempat yang membuat kita harus menggunakan dial up connection, terkadang kita membutuhkan PC sekitar kita juga terhubung ke internet. Untuk itu NAT adalah solusi yang mudah untuk digunakan:
# iptables -t nat -A POSTROUTING -s [IP local]/[netmask] -o eth0 -j SNAT –to [IP internet]
atau bisa dengan begini:
# iptables -t nat -A POSTROUTING -s [IP local]/[netmask] -j MASQUERADE
dan jangan lupa, di-enable dulu forwarding IP-nya:
# echo 1 > /proc/sys/net/ipv4/ip_forward
it’s so simple..
June 10, 2010
Read Client Certificate on Java Mutual HTTPS
Seperti yang sudah pernah diungkit sekilas pada posting sebelumnya, server yang menggunakan HTTPS dengan Mutual Authentication seharusnya bisa memanfaatkan data-data yang terdapat pada sertifikat client untuk digunakan oleh server dalam berbagai keperluan, sebut saja pemberian hak akses terhadap client misalnya. Dengan demikian tentunya Application Server harus bisa membaca sertifikat client yang sedang bertransaksi dengannya. Pada bahasan mengenai HTTPS Mutual Authentication baik dengan menggunakan apache maupun tomcat di posting sebelumnya, pembahasan hanya sebatas konfigurasi pada Web Server, namun belum sampai kepada bagaimana Application Server dapat “mengenali” sertifikat client. Kali ini akan dibahas bagaimana cara Application Server yang menggunakan java membaca sertifikat client yang berkomunikasi dengannya melalui HTTPS Mutual Authentication.
Pertama yang harus dipastikan adalah konfigurasi web server yang mewajibkan agar komunikasi antar client-server harus dengan menggunakan sertifikat:
port=”8443″ enableLookups=”true”
acceptCount=”100″ connectionTimeout=”20000″
useURIValidationHack=”false” disableUploadTimeout=”true”
scheme=”https” secure=”true” SSLEnabled=”true”
keystoreFile=”[path]/server.jks” keystorePass=”keystore pass”
truststoreFile=”[path]/truststore.jks” truststorePass=”truststore pass”
clientAuth=”true” sslProtocol=”TLS”/>
Selanjutnya adalah capture sertifikat dengan mengambil atribut yang ada pada HttpServletRequest (more…)
June 7, 2010
Installation Practice EJBCA-3.9.2
Sebenernya EJBCA sudah menyediakan dokumentasi dan manual lengkap mulai dari instalasi, penggunaan, contoh-contoh dll disini, kompleks memang, karna fitur yang ditawarkannya memang begitu banyak. Berikut ini adalah langkah-langkah instalasi EJBCA versi 3.9.2 dengan menggunakan tools ANT versi 1.8 dan JBOSS versi 5.1.0, memang bukan versi yang terbaru untuk saat ini, namun hanya sekedar untuk coba-coba install, running dan mengetahui apa dan bagaimana Certification Authority (CA) bekerja, insyaallah cukuplaah..
Yang pertama wajib harus ada pada sistem operasi yang akan digunakan adalah JDK, jelas saja karna EJBCA memang dikembangkan dengan menggunakan java, selain itu harus di set juga security provider untuk Bouncycastle sebagaimana yang digunakan oleh EJBCA dan pastikan Java Cryptography Extension (JCE) sudah terinstall pada JRE yang digunakan.
Bouncycastle provider:
Copy-kan library bouncycastle pada direktory extensible library pada JRE, untuk Ubuntu ada di direktori /usr/lib/jvm/java-6-sun/jre/lib/ext/, setelah itu edit file java.security
$ sudo vi /usr/lib/jvm/java-6-sun/jre/lib/security/java.security
dan tambahkan baris ini:
security.provider.9=bouncycastle.jce.provider.BouncyCastleProvider
Java Cryptography Extention (JCE):
Download jce, dan copy n replace file local_policy.jar dan US_export_policy.jar ke direktory /usr/lib/jvm/java-6-sun/jre/lib/security
Selanjutnya adalah setting beberapa path yang dibutuhkan pada saat build dan deploy EJBCA (more…)
April 2, 2010
Https Mutual Authentication from Java Client
Masih kelanjutan dari posting-posting sebelumnya, yaitu mengenai https mutual authentication, namun kali ini dari sisi clientnya dengan menggunakan java :
public static void httpsOpenConnection () {
try {
String[][] props = {{"javax.net.ssl.keyStore", KEYSTORE},
{"javax.net.ssl.keyStorePassword", KEYSTORE_PASS},
{"javax.net.ssl.trustStore", TRUSTORE},
{"javax.net.ssl.trustStorePassword", TRUSTORE_PASS}};
for (int i = 0; i<props.length; i++)
System.getProperties().setProperty(props[i][0], props[i][1]);KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(new FileInputStream(KEYSTORE), KEYSTORE_PASS.toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, KEYSTORE_PASS.toCharArray());
KeyStore ksT = KeyStore.getInstance("JKS");
ksT.load(new FileInputStream(TRUSTORE), TRUSTORE_PASS.toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ksT);
SSLContext sslContext = SSLContext.getInstance("TLSv1");
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new java.security.SecureRandom());
SSLSocketFactory sslsf = sslContext.getSocketFactory();
SSLSocket sslSocket = (SSLSocket) sslsf.createSocket(HOST, PORT);
sslSocket.startHandshake();// String [] arr = sslSocket.getEnabledProtocols();
// for(int i=0;i<arr.length;i++)
// System.out.println(arr[i]);URL url = new URL(ENDPOINT);
HttpsURLConnection.setDefaultSSLSocketFactory(sslsf);
HttpsURLConnection urlc = (HttpsURLConnection) url.openConnection();} catch (KeyManagementException ex) {
System.err.println(ex);
} catch (UnrecoverableKeyException ex) {
System.err.println(ex);
} catch (IOException ex) {
System.err.println(ex);
} catch (NoSuchAlgorithmException ex) {
System.err.println(ex);
} catch (CertificateException ex) {
System.err.println(ex);
} catch (KeyStoreException ex) {
System.err.println(ex);
}
}
