2013年6月25日火曜日

InstallCertでJREに証明書インポート

InstallCertの使い方がわかったのでちょっと書いておく

InstallCert.java

http://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java

<使い方>

java InstallCert [ホスト]:[ポート]


実行すると%JAVA_HOME%/lib/security/jssecacerts を読み込む
なければcacertsを読み込み 

ホストに接続して、必要な証明書を追加したものを実行ディレクトリにjssecacertsというファイル名で
出力してくれる

なので、jssecacertsを%JAVA_HOME%/lib/security/cacertsというファイルと置き換えるとよい

これは色々使えるかも?

2013年6月23日日曜日

ORA-12519 オラクルエラー

oracle XE でエラー ORA-12519, TNS:no appropriate service handler found
おそらくセッション数が足りてないとかだろう トランザクションを何個も使うことしてたので。
 根本的にはトランザクション減らすほうがよいけど めんどくさいのでオラクルのパラメータ変更にて対応
 sqlplus sys/pass as sysdba
SQL> ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE
SQL> shutdown immediate
SQL> startup
 2008年の情報なので違うかもしれないけど下記が書かれていた processは 「Oracleに同時に接続できるオペレーティングシステムのユーザプロセスの最大数」 (開発してるWebアプリとかcseとかObjectBlowserとか) sessionsは 「Oracle に同時に接続できるセッションの最大数」 (process + Oracleが内部的に使用する接続数) デフォルトの初期値は sessions = 1.1 × process + 5
 ついでによく忘れる画面の表示文字数 set linesize 200

spring mvcで文字化け

文字化け対策  web.xmlにfilter追加(最初に)
tomcatのserver.xmlにURIEncoding="UTF-8" こんな感じ
jspに追加

2013年6月22日土曜日

openldapの証明書をjavaにimport

openldap(windows)には
もともとopenldapにはsecure\certs\server.pem
という証明書がついていたのでそれをjavaでインポートする

pemはjavaでは扱えないようなのでopensslで変換する

1.
openssl pkcs8 -topk8 -nocrypt -in server.pem -inform PEM -out key.der -outform DER
openssl x509 -in server.pem -inform PEM -out cert.der -outform DER

参考
http://www.agentbob.info/agentbob/79-AB.html

 2.
上記サイトのImportKey.javaを実行
java ImportKey key.der cert.der
keystore.ImportKey が作成される


3.
証明書作成
keytool -export -alias importkey -keystore keystore.ImportKey -storepass importkey -file tomcat.cer
参考
http://apis.jpn.ph/fswiki/wiki.cgi?page=Java%2Fkeytool#p7
4.
証明書をインポート

keytool -import -storepass changeit -keystore  "%JAVA_HOME%/jre/lib/security/cacerts"  -alias localhost -file tomcat.cer


こんな感じだけどaliasとパスワードは違うかも
これでjavaでSSL通信が可能に

これ以外にも下記のやつを引数をサーバアドレスにして
を実行すると自動でcertをインポートしてくれるらしいけど たぶんそれだけでは足りない

http://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java



opensslにてCA証明書作成

CA.sh -newcaでうまくいかないので以下で対応

# mkdir -p demoCA/private
# mkdir -p demoCA/newcerts
# touch demoCA/index.txt
# touch demoCA/serial
# echo 00 > demoCA/serial
# openssl req -new -x509 -newkey rsa:2048 -out cacert.pem -keyout private/cakey.pem

openssl.confにてpolicy_matchをすべてoptionalにすればfiledが一致してなくても
うまくいく

参考
http://d.hatena.ne.jp/marmotte/20100203


サーバ証明書への署名
openssl ca -keyfile cakey.pem -cert cacert.pem -in server.csr -out server.crt


参考
http://www.ksgmt.com/article/java/javassl_clientcert.html