Translate

2017年2月13日月曜日

JAVAでテスト用SSL証明書を許可する

 Tomcatを使ってTLS接続のサーバ間通信をしようとすると、テスト用サーバの証明書が認証局に登録されていなくってSSLExceptionが出ることがあります。
 その際に、JAVAの信頼済み証明書にテスト用のSSL証明書を登録することで回避する方法について記録します。

■症状

JAVAを使ったHTTPS通信でテストサーバに繋ぐと、SSLExceptionがでる。

■回避方法

ネットを調べていると信頼済み証明書に追加する方法と、証明書の検証をしない方法とがありましたが、後者の場合本運用にそのまま移行できないので、ここでは前者の信頼済み証明書に追加する方法について説明します。

■信頼済み証明書に登録する

  1. tomcatが使用しているjavaのパスを調査し、cacertsを探す
  2. cacertsの場所は通常以下のような場所にあります。
    • Windowsの場合
    • C:\Program Files\java\jre<バージョン番号>\lib\security
      
    • CentOSの場合
    • /etc/pki/ca-trust/extracted/java/
      
  3. keytoolを使ってcacertsに証明書(CRT)を追加する
  4. keytool -importcert -v -trustcacerts -file <証明書ファイル> -keystore <信頼済み証明書ファイル>
    
    証明書ファイル: /etc/httpd/ssl/server.crt
    信頼済み証明書ファイル: /etc/pki/ca-trust/extracted/java/cacerts
    各ファイルが上記の場所に保存されている場合
    keytool -importcert -v -trustcacerts -file /etc/httpd/ssl/server.crt -keystore /etc/pki/ca-trust/extracted/java/cacerts [Enter]
    キーストアのパスワードを入力してください:  
    所有者: CN=www.test.jp, O=Company, L=Kyoto, ST=Kyoto, C=jp
    発行者: CN=www.test.jp, O=Company, L=Kyoto, ST=Kyoto, C=jp
    シリアル番号: ****************
    有効期間の開始日: Mon Feb 13 14:17:42 JST 2017終了日: Thu Feb 11 14:17:42 JST 2027
    証明書のフィンガプリント:
             MD5:  **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             SHA1: **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             SHA256: **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             署名アルゴリズム名: SHA512withRSA
             バージョン: 1
    この証明書を信頼しますか。 [いいえ]:  y
    証明書がキーストアに追加されました
    [/etc/pki/ca-trust/extracted/java/cacertsを格納中]
    
    これは、CentOSの例になりますが、Windowsの場合適所修正してください。

■Eclipseの場合

Eclipseでデバッグしている場合は設定のサーバでどのフォルダのJAVAを使用しているか確認することが出来ます。

0 件のコメント :

コメントを投稿