本来は推奨するものではありません。
ルート証明書やクライアント証明書の有効期限が切れた場合に、
通常は全台に再配布などが必要だが
WEBサーバーのopenssl
をリビルドすることでなんとかできるという話。
通常はApacheのerror_log に以下エラー
日付が過ぎている場合、以下エラーが出力される。
[error] [client 127.0.01] Certificate Verification: Error (10): certificate has expired[Wed Oct 02 05:41:46 2024] [debug] ssl_engine_kernel.c(1894): OpenSSL: Write: error
以下を行った場合はエラーとせずアクセスできるようになる。
WEBサーバーの日時を変更する方法
自己署名証明書で稼働しているWEBサーバーで証明書の有効期限を無制限にしたい場合は
WEBサーバーのOSの日付を有効期限前にし続ければよい。
# (過去)有効期限より前にしたいとき
date -s "2020-10-21 10:10:10"
# (未来)有効期限切れの動作をチェックしたい場合
date -s "2030-10-21 10:10:10"
OpenSSLのx509_vfy.cを変更する方法
有効期限が切れていた場合、expiredに遷移するがそこを許容する。
- crypto/x509/x509_vfy.c
sed -i \
-e "1593i return 1; //Allow expired certificates !" \
crypto/x509/x509_vfy.c
rpm -Uvh --force openssl*rpm
reboot
有効期限が過ぎていてもアクセスできることを確認。
気づき
証明書のチェックはhttpdパッケージ
内のmod_ssl.so
が行っていると思っていたが
そうではなく、libcrypto.so
や libssl.so
が行っている様子。
他にもレガシーネタいろいろ書いています
参考