3.3. OpenSSL を使用した TLS サーバー証明書の秘密鍵と CSR の作成

認証局 (CA) からの有効な TLS 証明書がある場合にのみ、TLS 暗号化通信チャネルを使用できます。証明書を取得するには、最初にサーバーの秘密鍵と証明書署名要求 (CSR) を作成する必要があります。


  1. 以下のようにサーバーシステムで秘密鍵を生成します。

    $ openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 -out <server-private.key>
  2. オプション: 次の例のように、選択したテキストエディターを使用して、CSR の作成を簡素化する設定ファイルを準備します。

    $ vim <example_server.cnf>
    keyUsage = critical, digitalSignature, keyEncipherment, keyAgreement
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_name
    distinguished_name = dn
    prompt = no
    C = <US>
    O = <Example Organization>
    CN = <server.example.com>
    DNS.1 = <example.com>
    DNS.2 = <server.example.com>
    IP.1 = <>
    IP.2 = <::1>
    IP.3 = <>

    extendedKeyUsage = serverAuth オプションは、証明書の使用を制限します。

  3. 前に作成した秘密鍵を使用して CSR を作成します。

    $ openssl req -key <server-private.key> -config <example_server.cnf> -new -out <server-cert.csr>

    -config オプションを省略すると、req ユーティリティーは次のような追加情報の入力を求めます。

    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    Country Name (2 letter code) [XX]: <US>
    State or Province Name (full name) []: <Washington>
    Locality Name (eg, city) [Default City]: <Seattle>
    Organization Name (eg, company) [Default Company Ltd]: <Example Organization>
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) []: <server.example.com>
    Email Address []: <server@example.com>



  1. 要求された証明書を CA から取得したら、次の例のように、証明書の中で人間が判読できる部分が要件と一致することを確認します。

    $ openssl x509 -text -noout -in <server-cert.crt>
            Issuer: CN = Example CA
                Not Before: Feb  2 20:27:29 2023 GMT
                Not After : Feb  2 20:27:29 2024 GMT
            Subject: C = US, O = Example Organization, CN = server.example.com
            Subject Public Key Info:
                Public Key Algorithm: id-ecPublicKey
                    Public-Key: (256 bit)
            X509v3 extensions:
                X509v3 Key Usage: critical
                    Digital Signature, Key Encipherment, Key Agreement
                X509v3 Extended Key Usage:
                    TLS Web Server Authentication
                X509v3 Subject Alternative Name:
                    DNS:example.com, DNS:server.example.com, IP Address:, IP


  • openssl (1)x509(1)genpkey (1)req (1)、および config (5) のman ページ