WindowsでSSL証明書発行・更新する2つの方法

SSL証明書発行・更新はSSLの仕組みを理解すれば簡単です。

簡単にまとめると以下の流れになります。
1.秘密鍵作成
2.作成した秘密鍵を使ってCSR作成
3.作成したCSRをサーバ認証機関に申請
4.サーバ認証機関から証明書が発行される
5.CSRを作った秘密鍵と証明書をサーバにインストール

1,2は基本的にコマンドで作成する必要がありますが、Windowsでは使えません。
作成するコマンドを使うためには「Git Bush」をインストールする必要があります。
インストールできない環境の場合はLinuxで作成するか作成できるWEBサイトを活用するしかありません。

インストール方法は以下の記事

SCPコマンドとは SCPコマンドはリモートのマシンにデータをコピーするコマンドです。コピーコマンドのcpにsがついています。 sはSSH...

Git Bushを使ってコマンドで作成する場合

インストールが終わったらGit Bushを起動しコマンドを使って秘密鍵作成を行います。
コマンドは「winpty openssl」を使います。Linuxのように「openssl」のみで実行すると作成できませんので必ず「winpty」を付けてください。

・形式(RSA)

winpty openssl genrsa オプション

以下のコマンドで作成します。

winpty openssl genrsa -out ./server.key 2048 

・説明
[winpty openssl genrsa]
RSA暗号形式を使って秘密鍵を作成する。
RSA暗号とは桁数が大きい数の素因数分解を解くのが困難であるという特性を利用した暗号化技術。
素因数分解の問題を簡単に解く方程式がないのでひたすら計算するしかない。もしスーパーコンピュータを使っても桁数が多いとほぼ解けない。

[-out ./server.key]
出力する秘密鍵の名前を任意で決める。

[2048]
RSA暗号形式の強度。大きいと強度が大きくなる。2048以上あれば問題ない。

秘密鍵にパスフレーズを付けたい場合

オプションに-des3を追加するとパスフレーズが設定できる。

winpty openssl genrsa -des3 -out ./server.key 2048  
Enter pass phrase for ./server.key:          ←パスワード  
Verifying - Enter pass phrase for ./server.key:    ←再度パスワード

CSRを作成

作成した秘密鍵を使ってCSRを作成します。

openssl req -new -key [秘密鍵] -out [出力するCSRの名前]

以下のコマンドで作成します。

openssl req -new -key ./server.key -out ./server.csr

以下の質問に答え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) []:Chuo-ku, Osaka-shi
Locality Name (eg, city) [Default City]:Osaka
Organization Name (eg, company) [Default Company Ltd]:company 
Organizational Unit Name (eg, section) []:空白  
Common Name (eg, your name or your server's hostname) []:hogehoge.com
Email Address []:空白  
  
Please enter the following 'extra' attributes  
to be sent with your certificate request  
A challenge password []:空白  
An optional company name []:空白  

・説明
[Country Name]
国コードを入力します。日本の場合はJPを入力。

[State or Province Name]
市区町村を入力します。

[Locality Name]
都道府県を入力します。

[Organization Name]
組織・団体名を入力します。

[Organizational Unit Name]
部門・部局を入力します。空白でも問題ないです。

[Common Name]
SSL化したいFQDNを入力します。

他の項目は空白で問題ないです。

WEBサイトのCSR・秘密鍵生成ツールで作成する

コマンドを使う以外にもWEBアプリを使う方法があります。SSL発行会社のほとんどがWEBサイト上で作成するツールをもっています。
これを利用することで簡単に作成することができます。

CSR・秘密鍵生成ツール
https://www.ssl-mart.com/system/tool/generateCsr

申請する

SSL証明書を発行してもらうために発行会社にCSRを提出します。申請はフォームからできます。作成したCSRをテキストエディタで開き、内容をコピーしフォームに貼り付けます。
その後ドメイン認証型の場合は申請者が本当にドメインの所有者かどうか承認してもらう必要があります。承認方法は指定の受信メールアドレスを選択するか指定のファイルをアップロードかのどれかになります。申請するSSL会社によりますが、だいたいこの二通りになります。

証明書発行

承認完了後、メールでSSL証明書と中間証明書が届きます。Apacheに届いた証明書と中間証明書、申請したCSRを作成した秘密鍵をインストール(設定)します。CSRはインストールに必要ありません。インストール方法は割愛します。

ペアの確認方法

CSR(公開鍵)、秘密鍵、証明書はそれぞれペアでなければなりません。
秘密鍵がほかのものになっている場合はエラーがでて動作しません。不安な時は必ずチェックしてください。

確認方法はコマンドで行います。Windowsの場合はGit Bashを起動してください。

・CSRファイルのチェックサム取得

openssl req -noout -modulus -in [CSR名] | openssl md5
openssl req -noout -modulus -in server.csr | openssl md5
(stdin)= 47bab85c249c832344bfec3d3a52e77b

・秘密鍵ファイルのチェックサム取得

openssl rsa -noout -modulus -in [秘密鍵名]| openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5
(stdin)= 47bab85c249c832344bfec3d3a52e77b

・SSL証明書ファイルのチェックサム取得

openssl x509 -noout -modulus -in [証明書名] | openssl md5
openssl x509 -noout -modulus -in server.crt | openssl md5
(stdin)= 47bab85c249c832344bfec3d3a52e77b

チェックサム(stdin)の値が同一であれば問題ありません。違う場合は間違っています。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする