2020年 10月
JAVA からSSLで通信するためには、証明書を信頼する必要があるってどういうこと?
keytool.exe こいつが曲者
信頼しないとjavaのsslは失敗する。SSLException
こっちの問題なんだからいちいち設定するのはうざいと思う。
本来JAVAをインストールするとデフォルトで以下のファイルの中のCAを信頼させられている。
JAVAHOME\lib\security\cacerts
だから自分の作ったサーバーへの通信だけ失敗するという悩みにはまる。
じつに歯がゆい。
HTTPS LDAPSもサーバーの証明書を取ってきて信頼するといわない限りSSLは失敗する。
LDAPSもそうだということがはがゆい。
私の今回のテーマはActiveDirectory とLDAPSで通信することにあったからなおさらである。
インターネットインフォメーションサービス(IIS)マネージャ
サーバー証明書にあるサーバー証明書を開いてファイルにコピーする。
dccert.cer
bin\keytool.exe -import -trustcacerts -alias サーバーのfqdn -file “c:\サーバー証明書保存フォルダー\dcccert.cer” -keystore “lib\security\cacerts” -storepass パスワード
この時注意しないといけないのは、lib\security\cacerts を新規に作ってしまうと信頼できるサーバーが今回入れたサーバーのみになってしまうので、これでいろいろ困る場合があるので、既知のサーバー google amazon ・・・等にもつなげる場合は、JAVAなどをインストールするとcacertsがインストールされるので、これをコピーしてきてこれに信頼できるサーバーとして自分のサーバーの証明書を追加するといい。
こういうことってどっかには書いてあるのだろうけれどわかりにくい、証明書の生い立ちなんてどうでもいいからわかりやすい本を見つけたいものだ。