OpenSSL で自己署名証明書を生成する
この記事では、OpenSSL CLI を使って自己署名証明書を生成し、セキュア接続層(SSL)を有効にする方法を紹介します。
生成手順¶
- 手順1: 秘密鍵を生成する。秘密鍵は暗号化と認証に使用する
- `genrsa`: RSA 鍵を生成する
- `out`: 秘密鍵ファイル
- `2048`: ビット数
- 手順2: 証明書署名要求を生成する。証明書署名要求(CSR)は証明書の署名を依頼するためのもので、ファイルには公開鍵情報と証明書生成に必要な情報が含まれる
- `req`: 証明書要求コマンド
- `key`: 秘密鍵ファイル
- `new`: 新規作成
- `out`: CSR ファイル
生成処理は対話形式で進みます。以下のようになります。
Enter pass phrase for domain.key:
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]:AU
State or Province Name (full name) [Some-State]:stateA
Locality Name (eg, city) []:cityA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:companyA
Organizational Unit Name (eg, section) []:sectionA
Common Name (e.g. server FQDN or YOUR name) []:domain
Email Address []:email@email.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
注意: Common Name のプロンプトには、実際に使用する有効なドメイン名を入力してください
- 手順3: 自己署名証明書を生成する。信頼チェーンの検証が不要な環境では、自己署名証明書を直接生成して証明書サービスを有効にできます
- `x509`: x509 形式の証明書を生成する
- `signkey`: 秘密鍵ファイル
- `in`: 入力 CSR ファイル
- `days`: 有効期限
- `out`: 証明書ファイル
- 手順4: 自己署名 CA を生成する
CA の証明書と秘密鍵を生成する
- `req`: 証明書要求コマンド
- `x509`: x509 形式の証明書を生成する
- `sha256`: SHA-256 ハッシュアルゴリズム
- `days`: 有効期限日数
- `newkey`: 新しい鍵を作成する
- `rsa:2048`: RSA 暗号アルゴリズム 2048 ビット
- `keyout`: 秘密鍵ファイル
- `out`: 証明書ファイル
ルート CA で証明書に署名する
ext ファイルを作成する
注意: domain の箇所には、実際に使用する有効なドメイン名を入力してください
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName = @alt_names
[alt_names]
DNS.1 = domain
ルート証明書と秘密鍵で証明書に署名する
openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in domain.csr -out domain.crt -days 365 -CAcreateserial -extfile domain.ext