OpenVPN、ルート証明書の簡単な再発行

良い一日。 その背景は次のとおりです。10年前、私は地域全体に分散したセルラー通信サロンのネットワークのインフラストラクチャを調達しました。 アカウンティングソリューションとして、1C:Enterprise 7.7システムが分散データベースモードで使用されました。 データ交換には、通常のWindowsネットワークフォルダーが使用され、OpenVPNトンネルを介したアクセスが行われました。 そして、週に一度、センターと周辺の間の情報交換は完全に停止しました。 何らかの理由で、考えはすぐに忍び込んだ-10年が経過した(ルート証明書が作成されたのはこの期間だった)。 ログの分析により問題が確認され、この10年間は​​スキームはうまく機能しましたが、期限が来ました。 そして今、クライアントとサーバーのキー/証明書のボリューム全体を再生成するには? いいえ、少し簡単にできます...

OpenSSLが証明書を再発行し、古い秘密キーで署名することを許可する一方で、Modulus証明書の構造を維持し、新しい証明書は古いクライアント証明書を正常に検証します。

新しい証明書を作成します。

openssl x509 -in ca.crt -days 3650 -out ca-new.crt -signkey ca.key 

答えが得られます。

 Getting Private key 

および新しい証明書ca-new.crt

クライアント証明書を新しいルート証明書で検証します。

 openssl verify -CAfile ca-new.crt client9.crt 

すべてが順調です:

 client9.crt: OK 

次のコマンドを使用すると、証明書の内容を表示し、新しいModulus証明書と古いModulus証明書が同じであることを確認できます。

 openssl x509 -noout -text -in ca-new.crt 

すべてが非常に良いようです。古い証明書のイメージで名前を変更し、それを置く場所をユーザーに指示した後、新しい証明書を送信します(古い証明書を上書きします)。

サーバーでサービスを再起動し、クライアントの接続方法を確認します。 残念ながら、すべてのクライアントがこれを成功させたわけではありません。 ログに記録されたもの:

 Tue Mar 21 15:12:18 2017 VERIFY ERROR: depth=1, error=certificate signature failure: /C=RU... 

ここでは、数時間を失う必要があり、最終的にはクライアント証明書の検証もクライアントコンピューターで機能しなかったことが判明しました。

 openssl verify -CAfile ca-new.crt client9.crt 

(OpenVPNの一部としての)opensslバージョンは古いことが判明し、正常にチェックしたくありませんでした。

したがって、問題のあるクライアントはOpenVPNをバージョン2.3.3にアップグレードする必要がありました(これを使用しましたが、他のことについては何も言えませんが、新しいバージョンも積極的に動作すると思います)。システムはさらに10年間送信されました。

Source: https://habr.com/ru/post/J324770/


All Articles