SSL サーバ証明書の秘密鍵を間違えた

SSLサーバ証明書の更新作業をしていた。慣れたものだからいつも通りの作業手順でホイホイっとファイルを置き換えていき最後に apache の reload をしたところ httpd が落ちてしまった。なんですと?ログを見てみたら

 

[error] Unable to configure RSA server private key
[error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch

 

んあ?キーが違う?なるほどキーが違うということはわかった。でも同じようなファイル名のプライベートキーがあちこちのフォルダにあってどれだかわかんねえよ。

そんなとき。SSLサーバ証明書の modulus 値を表示。

 

[user@server1 ~]$ openssl x509 -text -noout -in public.crt -modulus

 

プライベートキーの modulus 値を表示。

 

[user@server1 ~]$ openssl rsa -text -noout -in private.key -modulus

 

SSLサーバ証明書の持つ modulus の値をメモっておき、それと同じ modulus の値を持つプライベートキーを探せばOK。

例えばこんな感じに表示される。

 

[user@server1 ~]$ openssl rsa -text -noout -in private.key -modulus | head -n4
Private-Key: (2048 bit)
modulus:
00:a5:fd:2c:eb:c8:d7:e3:6e:bc:a1:d7:79:32:34:
de:7e:b7:09:61:37:e0:40:e4:65:e3:d9:69:fa:34:

 

違うときはだいたい最初の一行目から全然違うから、とりあえず最初の数行を見ておけばOK。

こうやって正しい(対応する)プライベートキーを探してきて apache をもう一度起動したら問題なく動作した。あぶねえあぶねえ。

ファイルを用意したらシステムに反映させる前に、ほんとにそのキーが対応するものなのかどうなのかをきちんと確認しておいたほうが安心だね。