ここ最近は標準でSSL通信が推奨されており、開発環境でも本番と同様にSSL通信にしておきたいという要望が多いと思います。ワイルドカード証明書を取得していれば問題ないですが、ワイルドカード証明書は高価で個人だとコストがかかってしまうので、ここでは自己証明書(通称:オレオレ証明書)の作成方法をまとめています。
証明書の保存先を作成
最初に証明書ファイルを保存するディレクトリを作成します。保存先はどこでも良いので管理しやすい場所に保存してください。今回はわかりやすく「/etc/httpd/certs」としましたが「/etc/httpd/certs/hoge.jp/2020/」のようにドメインや年で分けると整理や更新が容易になります。
$ cd /etc/httpd/
$ mkdir certs
秘密鍵の作成
証明書を作成するのに必要な秘密鍵の作成を行います。コマンドを実行するとパスフレーズの入力を促されるので確認も含めて2回入力します。
$ cd /etc/httpd/certs
$ openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
................................+++
.......+++
e is 65537 (0x10001)
Enter pass phrase for server.key:{パスフレーズ}
Verifying - Enter pass phrase for server.key:{パスフレーズ}
証明書署名要求(CSR)の作成
次にCSR(Certificate Signing Request)というSSLサーバ証明書を発行するための証明書署名要求ファイルを作成します。CSRには「公開鍵」と「その所有者情報」などが記載されます。コマンドを実行すると各項目で入力を促されるので入力をしてください。各項目の内容はコマンドの下に記載。
$ openssl req -new -key server.key -out server.csr
Enter pass phrase for server.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) [XX]:{JP}
State or Province Name (full name) []:{Tokyo}
Locality Name (eg, city) [Default City]:{Chiyoda-ku}
Organization Name (eg, company) [Default Company Ltd]:{hoge}
Organizational Unit Name (eg, section) []:{}
Common Name (eg, your name or your server's hostname) []:{hoge.jp}
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 | 部署名をローマ字で入力。任意なので空白でOK。 |
Common Name | SSL通信を行いたいホスト名を入力。 |
Email Address | 担当者のメールアドレスを入力。任意なので空白でOK。 |
A challenge password | パスワードを入力。任意なので空白でOK。 |
An optional company name | 組織名の略称。任意なので空白でOK。 |
サーバ証明書の作成
通常であればこのあと「CSR」を認証局に送りSSL証明書を発行してもらいますが、今回は自己証明書(オレオレ証明書)なので自分で作成します。自己証明書はセキュリティが低くブラウザでは警告が表示されるので、本番のサービスには適用せず開発環境などのみで利用してください。今回は365日有効な証明書を作成しています。
$ openssl x509 -req -days 365 -signkey server.key < server.csr > server.crt
Signature ok
subject=/C=JP/ST=Tokyo/L=Chiyoda-ku/O=hoge/CN=hoge.jp
Getting Private key
Enter pass phrase for server.key:{パスフレーズ}
以上で自己証明書(オレオレ証明書)の作成は完了です。なお、SSLの設定は認証局を通して発行した証明書と変わりません。
それではみなさん、自由なWEBライフをお過ごしください!