はじめに
AWS Client VPN endpointに紐づくサーバ証明書(CAを含む)の更新しました。
ところが、OpenVPNクライアントの設定を更新し、接続しましたが、エラーとなる事象に遭遇しました。
また、エラー調査の最中判明した、OpenVPNクライアントログを確認する際の注意ポイントを記載します。
更新した証明書が有効になるタイミング
OpenVPNクライアントログを確認したところ、AWS Client VPN endpointに設定された証明書が更新されておらず、証明書の検証エラーとなっていました。
複数のエンドポイントで証明書更新を試したところ、設定の反映時間は固定ではなく、2時間~3.5時間と幅があるようです。
(弊社での実測値。この間、OpenVPNクライアントのログには証明書の検証エラーが記録される。)
OpenVPNクライアントログ確認時の注意ポイント
OpenVPNクライアントログに記載されるシリアル番号が、OpenSSLのコマンドで証明書を確認したものと違うことがわかりました。
OpenVPNクライアントログに記載されるサーバ証明書のシリアル値は10進数になっているようで、10進数から16進数変換を実施することでOpenSSLのコマンドで証明書を確認したものと同一の値を確認できます。
- OpenVPNクライアントのログ例
yyyy-mm-dd HH:MM:SS VERIFY ERROR: depth=0, error=unable to get local issuer certificate: CN=XXXXXX, serial=69349116004377250798465663206157132260
- OpenSSLコマンドの結果
$ openssl x509 -noout -serial -in server.crt ~中略~ serial=342C2766D6FFBFD6E2A82A73EEEF21E4 ~中略~
- 10進数→16進数変換
$ echo "obase=16;ibase=10;69349116004377250798465663206157132260"|bc 342C2766D6FFBFD6E2A82A73EEEF21E4
おわりに
証明書(CA、サーバー証明書)を入れ替えたり、サーバー証明書の期限が切れてしまった状態で更新作業をするときにこの仕様が問題となるので注意しましょう。