SSL Certificate

提供: fukudat.net
2024年1月5日 (金) 02:35時点におけるFukudat (トーク | 投稿記録)による版 (→‎証明書・秘密鍵の配置)
ナビゲーションに移動検索に移動

自分が管理しているサーバーのSSL証明書を更新する手順(覚書)。

値段が安いので、SSLストア で購入。

購入手順

  • https://www.ssl-store.jp/ にログイン。
  • 上部の「証明書」メニューをクリックして、「証明書購入」をクリック。
  • タブでブランドを選んで (FujiSSLが最安で 1,100円/年)、「新規」または「更新」をクリック。
  • 指示に従って、決済を完了する。

Private Key & CSR作成

CSR = Certificate Signing Request のこと。認証局に送る、証明書の発行のリクエスト。

ランダムなデータがあると良いので、適当に作る。例えば、

$ dd if=/dev/random of=random.dat bs=1k count=16384

秘密鍵 (private key) を作る。XXXXX はコモンネームで置き換える。

$ openssl genrsa -rand random.dat -des3 2048 > XXXXX.key.pem
16777216 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
....................+++
...+++
e is 65537 (0x10001)
Enter pass phrase: # パスフレーズを入れる
Verifying - Enter pass phrase: # もう一回

秘密鍵がパスフレーズ付きでできた。

次に CSR を作る。

$ openssl req -new -key XXXXX.key.pem -out XXXXX.csr
Enter pass phrase for XXXXX.key.pem: # さっき入れたパスフレーズを入力する
-----
Country Name (2 letter code) [XX]:JP # 日本はJPかな
State or Province Name (full name) []:Tokyo # 自分の住んでる都道府県
Locality Name (eg, city) [Default City]:Minato-ku # 自分の住んでる都市
Organization Name (eg, company) [Default Company Ltd]:fukudat.com # 自分の会社名とか苗字とか
Organizational Unit Name (eg, section) []: # 何も入力しなくて良い
Common Name (eg, your name or your server's hostname) []:XXXXX    # コモンネーム。この証明書を作るので、間違えないように。
Email Address []: xxxxx@xxxxx.com # 自分のメールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  # 何も入力しない
An optional company name []: # 何も入力しない

これで CSR ができた。

証明書の発行

作成したCSRの中身をコピーバッファにコピーして、SSLストアのCSR入力ボックスにペーストする。 すると、すぐに証明書 (server-common-name.crt) 、中間CA証明書 (ca-bundle.ca) がダウンロードされる。

もしサーバーがクラッシュしたりして秘密鍵を壊してしまったら、同じ手順で新しく CSR を作り直して、いつでも https://product.fujissl.jp/ で再発行してもらえる。 ただし、証明書を購入した際に入力した common name とメールアドレスのペアを正しく入力すること。

パスフレーズつき秘密鍵のパスフレーズ解除

$ openssl rsa < XXXXX.key.pem > XXXXX.key

これで web server をリスタートするたびにパスフレーズは不要。ただし、ファイルの permission に充分注意する。

証明書・秘密鍵の配置

Ubuntuの場合、以下のpathに配置する。owner, permission に注意。(ただし、XXXXX = common name)

$ sudo ls -l /etc/ssl/certs/XXXXX.crt /etc/ssl/certs/ca-bundle.ca /etc/ssl/private/XXXXX.key
-rw-r--r-- 1 root root 3276 Feb  1 19:05 /etc/ssl/certs/ca-bundle.ca
-rw-r--r-- 1 root root     2319 Feb  1 19:14 /etc/ssl/certs/XXXXX.crt
-rw------- 1 root ssl-cert 1679 Feb  1 19:23 /etc/ssl/private/XXXXX.key

apacheの設定ファイル (/etc/apache2/site-available/default-ssl.conf) がこれらのファイルを参照していることを確認する。

Postfix#SSL Certificate の設定も参照。

証明書の中身の確認

$ openssl x509 -in XXXXX.crt -text -noout

WWWの有無両方で同一の証明書を使用する

認証ファイルへのアクセスURLは「www」の有り無し両方のURLにアクセスした状態での確認が必要です。

及び