web-dev-qa-db-ja.com

Openvpn:既存の認証局からクライアント証明書を生成する

私の会社ではOpenVPNを使用してクライアントを中央サーバーに接続し、管理を容易にしています。弊社のファイアウォールソフトウェア(およびそのファイアウォールソフトウェア)にはOpenVPNのサポートが組み込まれており、証明書のジェネレーターが含まれています。最近、このジェネレーターは動作を停止しましたが、その理由はわかりません。ただ、とにかく昔は大変だったので、新しいアプローチを試してみたいと思います。

バグがあるように見えるので、ファイアウォールソフトウェアではなく、OpenVPNを備えたローカルコンピューターでクライアント証明書を生成したいだけです。私たちには既存の認証局があり、私はプレーンテキストで判読可能な完全な証明書を持っています。これには明らかにすべての発行者情報、係数、署名、および証明書自体が含まれます。

私の質問は、DebianベースのLinuxディストリビューションでOpenVPNを使用して、既存の認証局からクライアント証明書を生成できるかどうかです。新しいCAを再生成して署名することもできましたが、かなりの数のクライアントがあり、それらのVPNクライアント証明書を更新するのは面倒なので、むしろしたくありません。

OpenVPNでCAを生成し、必要なもので証明書データを変更しようとしましたが、OpenVPNは私のフォーマットとは少し異なるようです。

CAとクライアントはPKCS12です。これは可能ですか?それとも私はすべてを作り直す必要がありますか?

2

もちろん?

  • CAをPEMに変換します。
 openssl pkcs12 -in ca.pfx -out ca.crt -clcerts -nokeys 
 openssl pkcs12 -in ca.pfx -out ca.key -nocerts -nodes 
  • 4096ビットのRSAキーとそのCSR(証明書署名リクエスト)を生成します。
 openssl genrsa -out client.key 4096 
 openssl req -sha256 -out client.csr -key client.key -new 
  • CAキーで署名:
 openssl x509 -sha256 -req -days 365 -CA ca.crt -CAkey ca.key\
 -in client.csr -set_serial 01 -out client.crt 
  • クライアントキー/証明書をPKCS12に変換します。
 openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx 
4
Gea-Suan Lin

注意点の1つ:そのクライアント証明書をAzureで使用したい場合は、証明書にextendedKeyUsage = clientAuth拡張を含める必要があります。それがないと、ログにエラーは表示されませんが、Azureがいくつかのキーチェック後に接続をドロップするだけです。

これを証明書に追加するためのいくつかのポインタについては、 https://stackoverflow.com/questions/17089889/openssl-x509v3-extended-key-usage を参照してください。

0
fjalvingh