TL;DT
- SSL certificates を renew した後は、nginxをreloadする。
- ブラウザがちゃんとサーバにたどり着けてるか確認するにはnet-exportが使える
詳細な経緯
1. 問題の発覚
ある日、chromium系ブラウザから自宅鯖でホスティングしているgiteaにアクセスできなくなった。エラーはブラウザがサーバまで到達できなかった時によく出るやつ。firefoxではアクセスできるが、証明書周りのエラーが表示されるという感じだった。chromium系では全く見れないが、firefoxではかろうじて見れたので、最初はSSL証明書周りが直接的な原因かと考えた。
2. 証明書の更新
この時にfirefoxのアドレスバーから証明書の詳細を見ると、どうやら有効期限が切れているっぽいので、サーバー側でcertbot renew
をした。しかし改善しなかった。
3. ブラウザキャッシュの削除
ブラウザに古い証明書がキャッシュされているのかなと思い、ブラウザのキャッシュ等々を消したが特に改善しなかった。
4. DNS設定の見直し
chromium系ブラウザはそもそもページを読み込むことすらできなくなっていたので、そもそもサーバーに到達出来ていないのでは?と考え、chrome://net-export/
にアクセスし、giteaにアクセスする際のログを取得した(初めて知ったし使った)。ログをhttps://netlog-viewer.appspot.com/#import
に読み込んで、Eventからgiteaにアクセスするログを探すと、グローバルIPを見ていることが判明(我が家のルーターはグローバルIPを叩いても接続できない)。これによりchromium系ブラウザはそもそもサーバーに到達出来ていなかったことが判明。これはwindowsのDNS設定で優先DNSを自宅内権威DNSサーバに変更することで解決した(前に変更したのを忘れていた)。
これでchromium系ブラウザからも接続は出来るようになったが、SSLのエラーが出続けた。
5. nginxの再起動
既に証明書はrenewしてるし、ブラウザキャッシュも消しているし、となればパスが間違えているか、nginxの中で古い証明書が残っているのかと思いsystemctl restart nginx
をした所、全てエラーが消えた。
6. ついでに
同じLAN内の別のLXCからgitea内のレポジトリをクローンしようとした際に、server certificate verification failed. CAfile: none CRLfile: none
と出てクローン出来なかったのも、これで解決した。
参考