証明書の生成とエクスポート - Linux - OpenSSL

この記事は、OpenSSL を使用して自己署名ルート証明書を作成し、さらにクライアント証明書の .pem ファイルを生成するのに役立ちます。 代わりに .pfx ファイルと .cer ファイルが必要な場合は、Windows- PowerShell の指示を確認してください。

前提条件

この記事を使用するには、OpenSSL を実行しているコンピューターが必要です。

自己署名ルート証明書

このセクションは、自己署名ルート証明書の生成に役立ちます。 証明書を生成したら、ルート証明書の公開キー データ ファイルをエクスポートします。

  1. 次の例は、自己署名ルート証明書を生成するのに役立ちます。

    openssl genrsa -out caKey.pem 2048
    openssl req -x509 -new -nodes -key caKey.pem -subj "/CN=VPN CA" -days 3650 -out caCert.pem
    
  2. 自己署名ルート証明書のパブリック データを base64 形式で出力します。 これは Azure でサポートされている形式です。 P2S 構成手順の一環として、この証明書を Azure にアップロードします。

    openssl x509 -in caCert.pem -outform der | base64 -w0 && echo
    

[クライアント証明書]

このセクションでは、ユーザー証明書 (クライアント証明書) を生成します。 証明書ファイルは、コマンドを実行するローカル ディレクトリ内に生成されます。 各クライアント コンピューターで同じクライアント証明書を使用することも、各クライアントに固有の証明書を生成することもできます。 重要なのは、クライアント証明書がルート証明書によって署名されていることです。

  1. クライアント証明書を生成するには、次の例を使用します。

    export PASSWORD="password"
    export USERNAME=$(hostnamectl --static)
    
    # Generate a private key
    openssl genrsa -out "${USERNAME}Key.pem" 2048
    
    # Generate a CSR (Certificate Sign Request)
    openssl req -new -key "${USERNAME}Key.pem" -out "${USERNAME}Req.pem" -subj "/CN=${USERNAME}"
    
    # Sign the CSR using the CA certificate and CA key
    openssl x509 -req -days 365 -in "${USERNAME}Req.pem" -CA caCert.pem -CAkey caKey.pem -CAcreateserial -out "${USERNAME}Cert.pem" -extfile <(echo -e "subjectAltName=DNS:${USERNAME}\nextendedKeyUsage=clientAuth")
    
  2. クライアント証明書を確認するには、次の例を使用します。

    openssl verify -CAfile caCert.pem caCert.pem "${USERNAME}Cert.pem"
    

次のステップ

構成手順を続行するには、ポイント対サイト - 証明書認証に関するセクションを参照してください。