2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenSSLでTLS証明書用の暗号鍵およびCSR生成の備忘

Last updated at Posted at 2025-03-22

概要

OpenSSLを使ってTLS証明書を作るための鍵およびCSR生成に関する備忘
作成日: 2025/3/23

目次

  1. 鍵作成
    1-1. genrsaによる鍵生成
    1-2. genpkeyによる鍵生成
    1-3. 鍵生成におけるgenrsaとgenpkeyの違い
    1-4. パスフレーズ付きの鍵生成
    1-5. 鍵の使いわけ
  2. CSR生成
    2-1. 対話的なCSR生成
    2-2. 非対話的なCSR生成
    2-3. コモンネームとSAN(Subject Alternative Name)
    2-4. SANを指定する
    2-5. IPアドレスをSANに指定する
  3. 自己署名証明書
    3-1. CSRから証明書を生成
    3-2. CSRなしで鍵から証明書を生成

1. 鍵作成

前提として、この記事で使用しているOpenSSLのバージョンは次のとおり

OpenSSLのバージョン
$ openssl version
OpenSSL 3.4.1 11 Feb 2025 (Library: OpenSSL 3.4.1 11 Feb 2025)

1-1. genrsaによる鍵生成

  • まず最初に、genrsaによる鍵生成は古い方法で、現在は後述のgenpkeyを使うことが推奨されている
  • genrsaで生成できる暗号鍵はRSA暗号鍵のみ
  • RSAの鍵長は2048bitあればビットセキュリティでは112ビットに相当し2025年の時点では十分とされている
  • 2030年より先は128ビットセキュリティに相当する3072bitの鍵長がRSAに要求される
genrsa 2048bit
$ openssl genrsa -out genrsa2048.key 2048
$ cat genrsa2048.key
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDA+n48XJwk01he
(中略)
u1YnEEsoNUgRjrbLzcX/uUeP
-----END PRIVATE KEY-----
genrsa 3072bit
$ openssl genrsa -out genrsa3072.key 3072
$ cat genrsa3072.key 
-----BEGIN PRIVATE KEY-----
MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQCabFuhhXgsNreD
(中略)
Hn2fOt8yqlZEG9VNBzM9eU4=
-----END PRIVATE KEY-----

1-2. genpkeyによる鍵生成

  • TLS証明書のための暗号鍵の生成にはgenpkeyを使用する
  • genpkeyではRSA暗号に限らず他の暗号技術による暗号鍵の生成が可能
  • ECDSA(P-256)やed25519は128ビットセキュリティの強度があるため2030年以降でも十分な強度を有しており、鍵長もRSAより小さいためパフォーマンス面でのメリットもある
  • RSA以外の暗号鍵を使う場合は、証明書の発行者がその暗号に対応しているかを確認する必要あり
genpkey RSA2048bit
$ openssl genpkey -out genpkey-rsa2048.key \    
> -algorithm RSA \
> -pkeyopt rsa_keygen_bits:2048
........+++++++++++++++++++++++++++++++++++++++*....+...+..+.......+..+.+..+...............+...+.......+++++++++++++++++++++++++++++++++++++++*.++++++
.+.........+.......+++++++++++++++++++++++++++++++++++++++*...+++++++++++++++++++++++++++++++++++++++*.+.+.........+...+......+..+..........+..+.......+.......................+.+.....+.......+...............+.................+...+....+...+...+...+..+...+..........+..+.......+......+......+...+...........+.......+..+.+......+.........+..+...+....+........+....+...+..+......+...+.........+.+.................+............+............+.+........+.+.....+......+....+..............+......+......+...+....+...+..+...+.......+..+.........+.+...+...+.....+...+...............+......+....+.....+.+.....+.+.........+.........+........................+............+......+..+...+.......+...+..+......+.......+..+.++++++
$ cat genpkey-rsa2048.key 
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDP4TCs8j3m/MUL
(中略)
Ytj09DC7knJ+WxnH4uwnohUY
-----END PRIVATE KEY-----
$ openssl pkey -in genpkey-rsa2048.key -text -noout
Private-Key: (2048 bit, 2 primes)
modulus:
    00:cf:e1:30:ac:f2:3d:e6:fc:c5:0b:11:0e:5c:7e:
    (中略)
publicExponent: 65537 (0x10001)
privateExponent:
    56:4e:2f:10:4e:8e:66:bd:20:ed:a4:4a:2b:1a:90:
    (中略)
prime1:
    00:f3:9d:4d:11:50:91:01:52:a6:26:cb:bd:80:d9:
    (中略)
prime2:
    00:da:72:ca:cf:d1:08:8e:ca:39:07:ca:bb:c7:62:
    (中略)
exponent1:
    00:b8:25:88:72:f5:26:97:0c:65:81:df:f2:40:2a:
    (中略)
exponent2:
    01:9a:70:14:a0:63:20:b1:29:43:fe:5f:ec:71:b4:
    (中略)
coefficient:
    00:eb:02:16:c5:e4:54:e1:8b:de:59:04:1f:b5:c7:
    (後略)
genpkey ECDSA P-256
$ openssl genpkey -out genpkey-ecdsa.key \
> -algorithm EC \
> -pkeyopt ec_paramgen_curve:P-256
$ cat genpkey-ecdsa.key 
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgtjcn6pxI3TbNlsrM
ja4v0e1agJH0/fCo0YVpjLnclw6hRANCAATfc13M+YyOSLE0xJWkWCgQU/MUnDED
TDixCRDwfVLgtEdf4/y49VT2NG3Y6E8yCTxfwo8GaGRP7gfZgUIA/m9n
-----END PRIVATE KEY-----
$ openssl pkey -in genpkey-ecdsa.key -text -noout
Private-Key: (256 bit)
priv:
    b6:37:27:ea:9c:48:dd:36:cd:96:ca:cc:8d:ae:2f:
    d1:ed:5a:80:91:f4:fd:f0:a8:d1:85:69:8c:b9:dc:
    97:0e
pub:
    04:df:73:5d:cc:f9:8c:8e:48:b1:34:c4:95:a4:58:
    28:10:53:f3:14:9c:31:03:4c:38:b1:09:10:f0:7d:
    52:e0:b4:47:5f:e3:fc:b8:f5:54:f6:34:6d:d8:e8:
    4f:32:09:3c:5f:c2:8f:06:68:64:4f:ee:07:d9:81:
    42:00:fe:6f:67
ASN1 OID: prime256v1
NIST CURVE: P-256
genpkey ed25519
$ openssl genpkey -out genpkey-ed25519.key \      
> -algorithm ed25519
$ cat genpkey-ed25519.key 
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIElQ3HnCNIyP3cIhIG4/w8m1+zrxJKYqa/mNKL5xzdba
-----END PRIVATE KEY-----
$ openssl pkey -in genpkey-ed25519.key -text -noout
ED25519 Private-Key:
priv:
    49:50:dc:79:c2:34:8c:8f:dd:c2:21:20:6e:3f:c3:
    c9:b5:fb:3a:f1:24:a6:2a:6b:f9:8d:28:be:71:cd:
    d6:da
pub:
    cf:23:4c:99:f1:5e:6f:11:14:81:20:82:5f:59:74:
    2f:85:a8:92:a8:63:ea:fe:b0:e7:01:22:1e:23:b5:
    2e:77

1-3. 鍵生成におけるgenrsaとgenpkeyの違い

  • genrsaはRSA暗号しか扱えない、genpkeyはRSAに加えて他の暗号も扱うことができる
  • genpkeyではPKCS#8形式で保存される
  • 古いバージョンのOpenSSLでgenrsaによってRSA暗号鍵を生成すると、PKCS#1形式で保存するかもしれない

1-4. パスフレーズの設定

  • オプションで「-aes-128-cbc」や「-aes-256-cbc」などを指定すると暗号鍵にパスフレーズを設定し、暗号鍵を暗号化により保護する
  • パスフレーズを設定すると、暗号鍵を使用しようとするたびにパスフレーズが要求される
RSA暗号鍵生成パスフレーズ付き
$ openssl genpkey -out genpkey-rsa2048-passphrase.key \
> -algorithm RSA \
> -pkeyopt rsa_keygen_bits:2048 \
> -aes-128-cbc
..+...+.......+++++++++++++++++++++++++++++++++++++++*.+....+...........+.......+........+...+.+...+......+......+++++++++++++++++++++++++++++++++++++++*........+.....+...+....+...+........+...+.+...+...+..................+.....+.+.....+.+.....+....+.....+.............+.....+.......+...+......+.........+........+...+.+......+..+......+.+......+...+.....+.+........+......+..........+...........+...+.+..+.......+.....+.......+...............+.....+..........+......+..+.+..+...+...........................+.......+..+..........+...+.....+......+............+...+.+..............+......+...+.+..+.........+.............+..++++++
.+.....+.+...........+...+.+......+........+.+..+.......+..+...+.+......+++++++++++++++++++++++++++++++++++++++*..+.........+....................+.+.........+..+.+........+++++++++++++++++++++++++++++++++++++++*.+.............+...+.................+.++++++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
$ cat genpkey-rsa2048-passphrase.key 
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQOp9NqazaAQ3ti9SH
(中略)
IU+Q8stsUj/X9leVW6J8bZXucMIXkdEvqXOI5QAKQpSaDbo/LBhCEWE=
-----END ENCRYPTED PRIVATE KEY-----
$ openssl pkey -in genpkey-rsa2048-passphrase.key -noout -text
Enter pass phrase for genpkey-rsa2048-passphrase.key:
Private-Key: (2048 bit, 2 primes)
modulus:
    00:c7:6d:81:96:1a:0c:9b:0c:36:42:8a:06:ae:61:
(以下略)
ECDSA暗号鍵生成パスフレーズ付き
$ openssl genpkey -out genpkey-ecdsa-passphrase.key \
> -algorithm EC \
> -pkeyopt ec_paramgen_curve:P-256 \
> -aes-256-cbc
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
$ cat genpkey-ecdsa-passphrase.key 
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIH0MF8GCSqGSIb3DQEFDTBSMDEGCSqGSIb3DQEFDDAkBBB7lNHhn4zp17QQm56H
sY4pAgIIADAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBAgQQbwW1R/GLIckbtiWj
g4A8sASBkPjgJUdauqT0Zy94lQCC0SyzuqRThLb9DmHg7XjMWuLkP9pjIMZf/Ebb
XU1tjCnku0xhZQ4QIuri2jBIz2jGl0otD8ASnbEygJZ8GQElZMxuS21fRzXybYVn
zlrflvXHrtyffwTngPVtUxPefY1/M88d+glDKU7yGdakQJOGfKBti4VlPZZP51ww
BhNM+x9e9A==
-----END ENCRYPTED PRIVATE KEY-----
$ openssl pkey -in genpkey-ecdsa-passphrase.key -noout -text
Enter pass phrase for genpkey-ecdsa-passphrase.key:
Private-Key: (256 bit)
(中略)
ASN1 OID: prime256v1
NIST CURVE: P-256
  • 実際のサーバー運用でパスフレーズ付きの暗号鍵を使用する場合、サーバー起動のたびにパスフレーズを手動で入力するのは現実的でないため、自動化の仕組みを使用する
  • 例えば、Apache httpdでは、httpd.confに「SSLPassPhraseDialog」ディレクティブを使用してパスフレーズを出力するスクリプト等を指定して実行させる
httpd.conf
SSLPassPhraseDialog "exec:/path/to/passphrase.sh"
passphrase.sh
#!/bin/bash

echo "Open Sesame"
C lang
$ ed passphrase.c
passphrase.c: No such file or directory
a
#include <stdio.h>

int main()
{
  printf("Open Sesame\n");
}
.
wq
$ gcc passphrase.c -o passphrase
$ ./passphrase 
Open Sesame
  • 暗号鍵をパスフレーズ暗号化により保護するのは安全なのか、というテーマについて。結局のところ、サーバー内に暗号化された暗号鍵とパスフレーズを出力するスクリプトを同じ場所に保存するのだから、攻撃者にそのサーバーの特権ユーザーの権限を奪取されてしまったケースを想定すると、その場合にはそのどちらも窃取されてしまう。だからローカル保存に関してはパスフレーズを使用してもパスフレーズなしの暗号鍵をそのまま使うのと実質的な違いはないといえる
  • その暗号鍵を単独で別の場所に保管する場合には、パスフレーズ暗号化による暗号鍵の保護が効果をもたらすと言える。ただしパスフレーズを出力するスクリプトがそこに保管されないことが前提となる
  • ローカル保存において暗号鍵をより安全に保護したい場合は、パスフレーズ暗号化ではなく、相応の保護能力を備えた専用製品の導入を検討するのが望ましい

1-5. 鍵の使いわけ

  • 生成した暗号鍵は、1つの鍵につき極力1つの用途に限定する
  • 同一の鍵を複数の用途に使わない。例えば複数のサイトの証明書のための暗号鍵を同一にはしない
  • 証明書を更新するときに、従来の証明書のために使用した暗号鍵を再度使用せず、新たに生成した暗号鍵を使用する

2. CSR生成

  • CSRはCertificate Signing Requestの略称で、公開鍵とその被証明者(Subject)に関する各種情報を含んでいる
  • 証明書の発行者はCSRに署名することで証明書を生成する

2-1. 対話的なCSR生成

  • CSRの作成でググると大体出てくる方法
対話的なCSR生成
$ openssl req -new -key genpkey-ecdsa.key -out interactive.csr
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) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Ltd
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
$ openssl req -in interactive.csr -text -noout                
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C=JP, ST=Tokyo, O=Example Ltd, CN=www.example.com
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:df:73:5d:cc:f9:8c:8e:48:b1:34:c4:95:a4:58:
                    28:10:53:f3:14:9c:31:03:4c:38:b1:09:10:f0:7d:
                    52:e0:b4:47:5f:e3:fc:b8:f5:54:f6:34:6d:d8:e8:
                    4f:32:09:3c:5f:c2:8f:06:68:64:4f:ee:07:d9:81:
                    42:00:fe:6f:67
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        Attributes:
            (none)
            Requested Extensions:
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:46:02:21:00:f8:99:e6:0f:cf:87:76:30:da:23:b2:f2:c3:
        52:31:46:19:38:45:5a:87:7d:89:5e:c0:47:ad:c1:05:5e:96:
        a3:02:21:00:9c:5e:d0:5f:2e:80:9c:bb:7b:38:a2:f1:06:a5:
        47:9b:d4:5f:08:a9:59:35:98:79:58:4c:74:8c:96:53:44:c5

2-2. 非対話的なCSR生成

  • 「-subj」オプションを使うことで非対話的な方法でのCSR生成が可能
非対話的なCSR生成
$ openssl req -new -key genpkey-ecdsa.key \                   
> -out noninteractive.csr \
> -subj "/C=JP/L=Tokyo/O=Example Ltd/CN=www.example.com"
$ openssl req -in noninteractive.csr -text -noout
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C=JP, L=Tokyo, O=Example Ltd, CN=www.example.com
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:df:73:5d:cc:f9:8c:8e:48:b1:34:c4:95:a4:58:
                    28:10:53:f3:14:9c:31:03:4c:38:b1:09:10:f0:7d:
                    52:e0:b4:47:5f:e3:fc:b8:f5:54:f6:34:6d:d8:e8:
                    4f:32:09:3c:5f:c2:8f:06:68:64:4f:ee:07:d9:81:
                    42:00:fe:6f:67
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        Attributes:
            (none)
            Requested Extensions:
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:45:02:21:00:8a:ff:f9:94:a9:37:bf:35:73:c8:73:50:b2:
        4c:af:1e:f1:87:13:9c:a1:d8:7b:17:1c:d5:a6:ec:19:4d:29:
        19:02:20:13:ef:72:fb:6c:0b:f6:8e:21:db:8c:f7:d3:b1:08:
        30:6d:63:47:2b:2a:ce:4d:16:ec:68:e9:1f:55:f8:63:a0

2-3. コモンネームとSAN(Subject Alternative Name)

  • 従来はコモンネームに証明書を適用するサイトのFQDNを設定していた
  • SAN(Subject Alternative Name)を使うことにより複数のサイトの証明書として使用することが可能になる
  • 例えば、「www.example.com」と「example.com」を同じサイトで扱う場合、SANにその2つを指定することで、一つの証明書で両方を扱うことができる。これは「*.example.com」のようなワイルドカード証明書では実現できない

2-4. SANを指定する

SANを指定
$ openssl req -new -key genpkey-ecdsa.key \        
> -out san.csr \
> -subj "/C=JP/L=Tokyo/O=Example Ltd/CN=www.example.com" \
> -addext "subjectAltName = DNS:www.example.com, DNS:example.com"
$ openssl req -in san.csr -text -noout
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C=JP, L=Tokyo, O=Example Ltd, CN=www.example.com
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:df:73:5d:cc:f9:8c:8e:48:b1:34:c4:95:a4:58:
                    28:10:53:f3:14:9c:31:03:4c:38:b1:09:10:f0:7d:
                    52:e0:b4:47:5f:e3:fc:b8:f5:54:f6:34:6d:d8:e8:
                    4f:32:09:3c:5f:c2:8f:06:68:64:4f:ee:07:d9:81:
                    42:00:fe:6f:67
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        Attributes:
            Requested Extensions:
                X509v3 Subject Alternative Name: 
                    DNS:www.example.com, DNS:example.com
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:44:02:20:10:6c:b7:cf:7b:cd:74:11:92:3f:39:51:94:e7:
        bf:77:82:17:69:b0:c9:2d:8f:17:e9:0c:75:32:5a:0c:93:43:
        02:20:08:7c:0e:5e:b2:35:93:99:25:62:a2:76:eb:ec:f8:f4:
        b2:ab:a2:60:f6:9f:35:66:67:f7:23:01:ca:b1:5c:8e

2-5. IPアドレスをSANに指定する

  • IPアドレスをSANに指定する
SANにIPアドレスを指定
$ openssl req -new -key genpkey-ecdsa.key \
> -out san-ip.csr \
> -subj "/C=JP/L=Tokyo/O=Example Ltd/CN=www.example.com" \
> -addext "subjectAltName = DNS:www.example.com, DNS:example.com, IP:10.10.10.100"
$ openssl req -in san-ip.csr -text -noout  
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C=JP, L=Tokyo, O=Example Ltd, CN=www.example.com
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:df:73:5d:cc:f9:8c:8e:48:b1:34:c4:95:a4:58:
                    28:10:53:f3:14:9c:31:03:4c:38:b1:09:10:f0:7d:
                    52:e0:b4:47:5f:e3:fc:b8:f5:54:f6:34:6d:d8:e8:
                    4f:32:09:3c:5f:c2:8f:06:68:64:4f:ee:07:d9:81:
                    42:00:fe:6f:67
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        Attributes:
            Requested Extensions:
                X509v3 Subject Alternative Name: 
                    DNS:www.example.com, DNS:example.com, IP Address:10.10.10.100
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:45:02:20:54:0d:ba:6d:72:c5:63:74:17:46:aa:a5:9f:9f:
        49:00:c8:fd:f0:e0:bb:64:8b:80:7c:34:cf:61:19:7c:62:18:
        02:21:00:97:17:b7:d0:be:b7:f0:4d:c6:41:aa:c5:35:1d:11:
        8d:9a:3a:43:33:48:29:72:95:82:44:0c:57:2a:e1:f6:3d

3. 自己署名証明書

3-1. CSRから証明書を生成

SANを有効にする場合は、証明書生成時に再度SANを指定する

CSRから証明書を生成
$ openssl x509 -req -days 365 -sha256 \
> -in san.csr -out fromcsr.crt -signkey genpkey-ecdsa.key \
> -extfile <(printf "subjectAltName = DNS:www.example.com, DNS:example.com")
Certificate request self-signature ok
subject=C=JP, L=Tokyo, O=Example Ltd, CN=www.example.com
$ openssl x509 -in fromcsr.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            29:3e:ce:ca:59:e3:41:21:b3:a9:b2:30:12:71:79:e3:44:71:1e:97
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: C=JP, L=Tokyo, O=Example Ltd, CN=www.example.com
        Validity
            Not Before: Mar 22 15:06:01 2025 GMT
            Not After : Mar 22 15:06:01 2026 GMT
        Subject: C=JP, L=Tokyo, O=Example Ltd, CN=www.example.com
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:df:73:5d:cc:f9:8c:8e:48:b1:34:c4:95:a4:58:
                    28:10:53:f3:14:9c:31:03:4c:38:b1:09:10:f0:7d:
                    52:e0:b4:47:5f:e3:fc:b8:f5:54:f6:34:6d:d8:e8:
                    4f:32:09:3c:5f:c2:8f:06:68:64:4f:ee:07:d9:81:
                    42:00:fe:6f:67
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Subject Alternative Name: 
                DNS:www.example.com, DNS:example.com
            X509v3 Subject Key Identifier: 
                89:70:0C:83:FF:D9:DF:AE:D9:26:85:9E:AA:97:E9:A2:E0:E8:78:91
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:44:02:20:54:db:40:0a:9f:83:bc:6a:69:42:fd:59:48:c1:
        5e:3c:99:7e:39:89:bd:65:28:77:91:16:ab:2e:38:92:d4:98:
        02:20:33:df:19:59:72:b0:c3:11:ab:f0:e0:08:a6:74:cf:97:
        91:e5:1f:52:a5:3a:5f:05:a2:5a:57:16:c6:01:b1:f5

3-2. CSRなしで鍵から証明書を生成

自己署名証明書を生成する際にはCSRは必ずしも必要ではない

CSRなしで鍵から証明書を生成
$ openssl req -new -x509 -days 365 \
> -key genpkey-ed25519.key -out skipcsr.crt \
> -subj "/C=JP/L=Tokyo/O=Example Ltd/CN=www.example.com" \
> -addext "subjectAltName = DNS:www.example.com, DNS:example.com"
$ openssl x509 -in skipcsr.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            58:df:b8:b6:c8:cb:2a:77:45:d6:48:9c:3d:52:b8:eb:39:86:90:44
        Signature Algorithm: ED25519
        Issuer: C=JP, L=Tokyo, O=Example Ltd, CN=www.example.com
        Validity
            Not Before: Mar 22 14:56:41 2025 GMT
            Not After : Mar 22 14:56:41 2026 GMT
        Subject: C=JP, L=Tokyo, O=Example Ltd, CN=www.example.com
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    cf:23:4c:99:f1:5e:6f:11:14:81:20:82:5f:59:74:
                    2f:85:a8:92:a8:63:ea:fe:b0:e7:01:22:1e:23:b5:
                    2e:77
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                94:88:DD:16:22:B7:2D:89:C5:8F:83:CF:69:F4:88:BC:C9:DE:2F:02
            X509v3 Authority Key Identifier: 
                94:88:DD:16:22:B7:2D:89:C5:8F:83:CF:69:F4:88:BC:C9:DE:2F:02
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Subject Alternative Name: 
                DNS:www.example.com, DNS:example.com
    Signature Algorithm: ED25519
    Signature Value:
        74:93:1d:cf:cb:4f:45:7c:ea:db:31:54:dc:59:5e:fd:c3:8c:
        b3:49:69:a9:b2:14:42:61:89:cb:14:bb:06:de:98:14:ba:56:
        3b:16:c8:3c:5f:25:67:e8:c3:06:cf:44:cb:17:f5:ad:cd:2b:
        0a:40:ca:ba:98:2d:9d:81:81:05

フッター

仲間を募集しています!

ARIではエンジニア・ITコンサルタント・PM職全方位で仲間を募集しております。
カジュアル面談、随時受付中です!
ご興味ある方はこちらをご覧ください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?