スポンサーリンク

信頼された証明機関がこの証明書を確認できません

ltfree-personal-device ウェブ Web
スポンサーリンク

Let’s EncryptでSSL/TLS動作させるときの注意点

信頼された証明機関がこの証明書を確認できません

無料で利用できるSSLとして人気があるLet’s Encryptですが、Nginxサーバーに設定するときに注意点が1つあります。

検索でヒットしたサイトの情報を見て、そっくりそのまま設定すると正しく出来ていないかもしれません。

そんなときには、
信頼された証明機関がこの証明書を確認できません。」とか
この接続はプライバシーが保護されていません」とか、「NET::ERR_CERT_AUTHORITY_INVALID
などと、利用者のブラウザ画面に表示されてしまっていて、見てもらうことなく逃げられているかもしれません。

Let’s EncryptでSSL証明書の発行申請をすると、cert.pemなど4種類の証明書が発行されます。

これをサーバーに設定するとき、

  • cert.pem
  • privkey.pem

を指し示すリンクにconfファイルを書き換えればよさそうで、実際そう説明している解説サイトが多数あります…。これでも動作し、何のエラーや指摘も出ないブラウザもあります。

しかし、この設定では「信頼された証明機関がこの証明書を確認できません。」といった類のエラーメッセージが出るブラウザも多数あるのが事実です。

このメッセージが出る理由は、中間CA証明書がサーバーに設定されていないためです。

実は、発行された証明書のなかに、chain.pemがちゃん含まれていて、これが中間CA証明書なのです。ただし、nginxにはchain.pemを設定する項目自体がないのです!

ではどうするのか?というと、cert.pemにchain.pemを含めてやって、それをcert部分に設定すればよいのです。

そうか!と、

cat cert.pem chain.pem  >  cert.pem

なんてする必要はありません。

Let’s Encryptは、ちゃんとSSL/TLS サーバ証明書(公開鍵を含む)と中間証明書の両方が含まれているfullchain.pemファイルを用意してくれているのです。

これが、cert.pemchain.pem の内容が結合されたものになっています。

結論

Nginxに設定する場合、cert.pemの代わりにfullchain.pemを設定すればいいよ!

 

TIPS

  • –nginxを付けて実行すれば、バーチャルドメイン設定にしている場合正しく設定されます
  • Let’s Encryptの証明書はpemになっていますので、DER や PFX などの他の形式のファイルが必要な場合には openssl を使用して変換する必要があります