タグ: mkcerts

mkcertのエラーを解消。

ローカル環境でのSSL通信を可能にするmkcert。単純な設定ミスを見つけました。

発生した現象

Kaspersky Antivirusで「もうこうな証明書のSSL接続が検知されました」のエラーを検知。理由は「この証明書チェーンは不完全です」

というもの。

原因

  • nginxの設定
  • mkcertの証明書の内容

は問題なしでした。(そもそも、他のドメインで同じように作ったときにはこんなエラーを検知しませんでした)

そこで、どんなコマンドを打っていたかの履歴をたぐります。

mkcert -install

mkcert -key-file [証明書秘密鍵].key.YYYYMM -cert-file [証明書].crt.YYYYMM ドメイン 

とすべきところを、

mkcert -install

sudo mkcert -key-file [証明書秘密鍵].key.YYYYMM -cert-file [証明書].crt.YYYYMM ドメイン 

と、root権限を付けていたことが原因。

  • ローカル証明局:一般ユーザ
  • SSL証明書:root

だったため、齟齬を起こしていたという次第。

対処

  1. 「sudo」で作っていた証明書を削除。
  2. 再度、一般権限でmkcertでローカル証明書を作成。
  3. 証明書ファイル差し替え

により、冒頭で述べたエラーは消えました。

こちらで紹介した手順では、このエラーが発生しないように差し替え済みです。

ローカルredmineのSSL更新。

ローカルドメインでもSSL通信を可能にするmkcerts。それだけに有効期限は3ヶ月程度。

それを更新した時の手順です。

前提

こちらのようにSSL化しています。

また、mkcertsは以下の手順でインストールしています。

手順

mkcertsでの証明書更新

mkcert -key-file corn.wall.key.202208 -cert-file corn.wall.crt.202208 corn.wall penzance.corn.wall "*.corn.wall" 
openssl x509 -text -noout -in ./corn.wall.crt.202208 |grep DNS
# DNS:corn.wall, DNS:penzance.corn.wall, DNS:*.corn.wall と、入力したDNS名があることを確認します

こうしてできた証明書と秘密鍵を任意の方法でredmineサーバに転送します。

転送先:

  • 証明書: /etc/certs
  • 秘密鍵:/etc/private

redmineサーバでの更新

証明書の入れ替え

cd /etc/certs/
# apacheの設定ファイルで証明書を格納した場所
unlink corn.wall.crt
ln -s corn.wall.crt.202208  corn.wall.crt

秘密鍵の入れ替え

cd /etc/private/
# apacheの設定ファイルで秘密鍵を格納した場所
unlink corn.wall.key
ln -s corn.wall.key.202208  corn.wall.key

設定反映

apache2ctl configtest
# SyntaxOKを確認
systemctl restart apache2

前提で設定したとおり、apacheの設定ファイルはシンボリックリンクの証明書を参照するようにしています。

したがって、証明書更新の際にはリンクを張り替えるだけで更新ができるという次第です。

Powered by WordPress & Theme by Anders Norén