SSL 自前の証明書を作成 - もっと楽に


クラウディア 


1. 概要
2. 管理番号発行ファイル作成
3. プライベートキーとCA証明書作成
4. ホストキーとホスト証明書作成
5. データベース・証明書要求ファイルの作成と署名
6. サーバ証明書作成
7. クライアント用証明書の作成
8. 結果の確認
9. 参考サイト

1. 概要

 前ページまで、コンフィグレーションファイルのある前提で、証明書を作成してきましたが。  どうも、コンフィグレーションファイルを使わなくてもできそうです。  本ページは、コンフィグレーションファイルを使わないで、証明書を作成する手順について記述します。  なので、「SSL 自前の証明書を作成 - 準備」の手順は、必要ありません。  本ページは、下記の設定を行うものとして、記述します。 ・国別ドメイン JP ・州(都道府県) Tokyo ・市区町村 Chiyoda ・ドメイン VM.SING.NE.JP ・メールアドレス hogehoge@sing.ne.jp

2. 管理番号発行ファイル作成

 証明書ファイルに対する管理番号発行ファイルとそのデータベースを作成します。  以下、すべて「root」ユーザ権限で。

mkdir -pv /etc/ssl/demoCA/private
mkdir -pv /etc/ssl/demoCA/crl
mkdir -pv /etc/ssl/demoCA/newcerts
 この場合、管理番号は「1」です。

3. プライベートキーとCA証明書作成

 プライベートキーと「CA」証明書とを作成します。  (「CA」は、「Certification Authority(認証局)」の略)

cd /etc/ssl/demoCA
openssl req -x509 -days 3650 -newkey rsa:2048 -keyout /etc/ssl/demoCA/private/cakey.pem -out /etc/ssl/demoCA/cacert.pem \
-subj "/C=JP/ST=Tokyo/L=Chiyoda/CN=VM.SING.NE.JP/emailAddress=hogehoge@sing.ne.jp"
 「-x509」は、証明書のアルゴリズム「X.509」。  「-days 3650」は、証明書の有効期間(この場合、約10年)。  「-newkey rsa:2048」は、2048 ビットのキーペアを作ることを意味します。  コマンド入力後、以下が表示されます。

.+...+..+.......+.....+...+............+.+.....+.+.....+....+.....+++++++++++++++++++++++*.+.
・・・	略	・・・
+...+.....+......+.+..+.+..............+...+....+........+........+++++++++++++++++++++++++++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
 「Enter PEM pass phrase:」「Verifying - Enter PEM pass phrase:」の箇所は、証明書用のパスワードを入力して Enter です。  入力した内容は、「*」も含め、エコーバックされませんのでご注意ください。  この手順によって、以下のファイルが作成されます。

/etc/ssl/demoCA/cacert.pem         CA証明書
/etc/ssl/demoCA/private/cakey.pem  プライベートキー

4. ホストキーとホスト証明書作成

 ホストキーとホスト証明書とを作成します。

cd /etc/ssl/demoCA
openssl req -newkey rsa:2048 -keyout /etc/ssl/demoCA/newkey.pem -out /etc/ssl/demoCA/newreq.pem \
-subj "/C=JP/ST=Tokyo/L=Chiyoda/CN=VM.SING.NE.JP/emailAddress=hogehoge@sing.ne.jp"
 コマンド入力後、以下が表示されます。

....+.........+.........+.+...+....................+.++++++++++++++++++++++++++++++

・・・	略	・・・

+...+....+...........+..........+.....+...+++++++++++++++++++++++++++++++++++++++++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
 「Enter PEM pass phrase:」「Verifying - Enter PEM pass phrase:」の箇所は、前項と同じパスワードを入力します。  「3. ホストキーとホスト証明書の作成」で作成したホストキーを使用しますと、apache の起動のたびにパスワードを聞いてきますので、自動起動できなくなります。  ホストキーをパスワード入力なしで使えるように、以下のコマンドでパスワードなしのホストキーを作成します。

cd /etc/ssl/demoCA
openssl rsa -in newkey.pem -out nokey.pem
 コマンド入力後、以下が表示されます。

Enter pass phrase for newkey.pem:
writing RSA key
 ここでも「2. プライベートキーとCA証明書の作成」で使用したものと同じパスワードを入力してください。  本項の手順によって、以下のファイルが作成されます。

/etc/ssl/demoCA/newkey.pem         ホストキー
/etc/ssl/demoCA/newreq.pem         証明書要求ファイル
/etc/ssl/demoCA/nokey.pem          ホストキー(パスワードなし)

5. データベース・証明書要求ファイルの作成と署名

 データベースと証明書要求ファイルの作成と署名を行います。

rm -f /etc/ssl/demoCA/index.txt
touch /etc/ssl/demoCA/index.txt
cd /etc/ssl/demoCA
openssl x509 -req -in newreq.pem -CA cacert.pem -CAkey private/cakey.pem -CAcreateserial -out cert.pem -days 3650
 「-days 3650」は、証明書の有効期間を日単位(この場合は約10年)で示します。  コマンド入力後、以下が表示されます。

Certificate request self-signature ok
subject=C=JP, ST=Tokyo, L=Chiyoda, CN=VM.SING.NE.JP, emailAddress=hogehoge@sing.ne.jp
Enter pass phrase for private/cakey.pem:
 「Enter pass phrase for private/cakey.pem:」の箇所は「2. プライベートキーとCA証明書の作成」で使用したものと同じパスワードを入力してください。  このとき、以下のファイルが作成されます。

/etc/ssl/demoCA/cert.pem		サーバ証明書
/etc/ssl/demoCA/cacert.srl

6. サーバ証明書作成

 ここは、「Forgejo」でサーバを作成するときに必要になります。  サーバの秘密鍵と証明書署名要求(CSR)を作成します。

cd /etc/ssl/demoCA
openssl req -new -nodes -days 3650 \
  -keyout /etc/ssl/demoCA/server-key.pem \
  -out /etc/ssl/demoCA/server.csr \
  -subj "/C=JP/ST=Tokyo/L=Chiyoda/CN=VM.SING.NE.JP" \
  -addext "subjectAltName = DNS:VM.SING.NE.JP"
 作成した「CA」鍵を使って、「CSR」に署名してサーバ証明書を発行します。

cd /etc/ssl/demoCA
openssl x509 -req -days 3650 \
  -in /etc/ssl/demoCA/server.csr \
  -CA /etc/ssl/demoCA/cacert.pem \
  -CAkey /etc/ssl/demoCA/private/cakey.pem \
  -CAcreateserial \
  -out /etc/ssl/demoCA/server-cert.pem \
  -copy_extensions copy
 この手順で、下記のファイルが作成されます。  上から順に、サーバ証明書・秘密鍵・署証明書署名要求(CSR)です。  発効後は、証明書署名要求(CSR)は不要になるので、削除しても構わないそうです。

/etc/ssl/demoCA/server-cert.pem
/etc/ssl/demoCA/server-key.pem
 etc/ssl/demoCA/server.csr

7. クライアント用証明書の作成

 クライアント用証明書を作成します。

openssl pkcs12 -export -inkey /etc/ssl/demoCA/newkey.pem -in /etc/ssl/demoCA/cert.pem -certfile /etc/ssl/demoCA/cacert.pem -out /etc/ssl/demoCA/newcerts/client.pfx
 これも、1 行入力です。  コマンド入力後、以下が表示されます。

Enter pass phrase for /etc/ssl/demoCA/newkey.pem:
Enter Export Password:
Verifying - Enter Export Password:
 「Enter pass phrase for /etc/ssl/demoCA/newkey.pem:」は、「2. プライベートキーとCA証明書の作成」で入力したパスワードと同一のものを入力します。  その後は、クライアントがクライアント証明書を取り込む時のパスワードです。  サーバ証明書用のパスワードとクライアント証明書用のパスワードは、別物です。  別に同じパスワードにしてもよいのですが、安全の為には別々のパスワードにするべきです。

8. 結果の確認

 ここまでの手順で。

/etc/ssl/demoCA
|-- cacert.pem
|-- cacert.srl
|-- cert.pem
|-- crl
|-- index.txt
|-- newcerts
|   `-- client.pfx
|-- newkey.pem
|-- newreq.pem
|-- nokey.pem
|-- private
|   `-- cakey.pem
|-- server-cert.pem
|-- server-key.pem
`-- server.csr
 という構成になっているはずです。  これらの使い方は、それぞれのバージョンのウェブサーバの項でご確認ください。

9. 参考サイト

 本ページは、「Gemini」伍長および「ChatGPT」軍曹を参考にさせていただきました。

audiobook.jp
アフィリエイトのアクセストレード
ベルリッツ
5G CONNECT
U-NEXT
EaseUS
ネットオークションの相場、統計、価格比較といえばオークファン
Amazonギフトカード
JETBOY
ハイスピードプラン
健康サポート特集
earthcar(アースカー)
それがだいじWi-Fi
TikTok Shop 【リピート用プログラム】
サウンドハウス
薬屋の独り言
損保との違い
葬送のフリーレン Prime Video
【usus ウズウズ】