はじめに
OpenSSLを用いてCA証明書、SSL証明書を作成する手順について備忘録として記載する。
環境
AlmaLinux 9.4
OpenSSL 3.0.7
OpenSSLのインストール
$ sudo dnf install openssl
- OpenSSLのバージョン確認
- OpenSSL 3.0.7がインストールされている
$ openssl version
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
CA証明書の作成
- 秘密鍵の作成
-
-algorithm RSA
:アルゴリズム RSA -
-pkeyopt rsa_keygen_bits:2048
:鍵長 2048bit -
-out ca.key
:ca.keyとして出力
-
$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out ca.key
- 証明書(CRT)の作成
- 上記で作成した秘密鍵(ca.key)を用いてCRTを作成する
-
-x509
:自己署名証明書(オレオレ証明書)にする -
-days 3650
:有効期限 3650日(10年) -
-out ca.crt
:ca.crtとして出力
$ openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
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]:JP // 国
State or Province Name (full name) []:Kanagawa // 都道府県
Locality Name (eg, city) [Default City]:Kawasaki // 市町村
Organization Name (eg, company) [Default Company Ltd]:xxx // 会社
Organizational Unit Name (eg, section) []:xxx // 部門
Common Name (eg, your name or your server's hostname) []:server // コモンネーム
Email Address []:xxx@xxx.com // メールアドレス
- ファイルの確認
$ ll
-rw-r--r--. 1 xxxx xxxx 1452 8月 7 11:19 ca.crt
-rw-------. 1 xxxx xxxx 1704 8月 7 11:10 ca.key
SSL証明書の作成
- 秘密鍵の作成
-
-algorithm RSA
:アルゴリズム RSA -
-pkeyopt rsa_keygen_bits:2048
:鍵長 2048bit -
-out server.key
:server.keyとして出力
-
$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out server.key
- 証明書署名要求(CSR)の作成
- 上記で作成した秘密鍵(server.key)を用いてCSRを作成する
-
-out server.csr
:server.csrとして出力
$ openssl req -new -key server.key -out server.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) [XX]:JP // 国
State or Province Name (full name) []:Kanagawa // 都道府県
Locality Name (eg, city) [Default City]:Kawasaki // 市町村
Organization Name (eg, company) [Default Company Ltd]:xxx // 会社
Organizational Unit Name (eg, section) []:xxx // 部門
Common Name (eg, your name or your server's hostname) []:server // コモンネーム
Email Address []:xxx@xxx.com // メールアドレス
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
- 証明書(CRT)の作成
- 上記で作成した秘密鍵(server.key)、証明書署名要求(server.csr)を用いてCRTを作成する
-
x509
:自己署名証明書(オレオレ証明書)にする -
-days 365
:有効期限 365日(1年) -
-in server.csr
:証明書署名要求 -
-CA ca.crt
:認証局のCA証明書 -
-CAkey ca.key
:認証局の秘密鍵 -
-CAcreateserial
:発行済みシリアルナンバーを保持するファイルca.srlを作成 -
-out server.crt
:server.crtとして出力
$ openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
Certificate request self-signature ok
subject=C = JP, ST = Kanagawa, L = Kawasaki, O = xxx, OU = xxx, CN = server, emailAddress = xxx@xxx.com
- ファイルの確認
$ ll
-rw-r--r--. 1 xxxx xxxx 41 8月 7 12:20 ca.srl
-rw-r--r--. 1 xxxx xxxx 1269 8月 7 12:20 server.crt
-rw-r--r--. 1 xxxx xxxx 1029 8月 7 12:14 server.csr
-rw-------. 1 xxxx xxxx 1704 8月 7 12:13 server.key