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年間送信されました。



All Articles