おれおれ 証明書について

SSL 通信には CA(Certification Authority、VeriSign 等の認証局)が発行した証明書が必要ですが、自分自身でデジタル証明書(server.crt)を作成し、Apache で SSL 通信ができるようにします。

おれおれ 証明書を作成するためには、以下の作業が必要です。

  • SSL モジュール導入
  • おれおれ証明書作成
  • おれおれ証明書設定、及び接続確認

SSL モジュール導入

Step 1. mod_ssl パッケージインストール

まずは、yum で SSL モジュールパッケージをインストールします。

mod_ssl パッケージインストールRaw Code(S)Raw Code(T)
# yum install mod_ssl

Step 2. インストール確認

インストールが終わったら以下を確認します。

  • mod_ssl パッケージが追加されていること
  • ssl_module が存在すること
  • /etc/httpd/conf.d/ssl.conf が存在すること
インストール後の確認Raw Code(S)Raw Code(T)
# rpm -qa | grep "mod_ssl"
mod_ssl-2.2.3-83.el5.centos

# httpd -M
・・・
ssl_module (shared)
・・・

# ls -l /etc/httpd/conf.d/ssl.conf
-rw-r--r-- 1 root root 9774 11月 12 11:30 /etc/httpd/conf.d/ssl.conf

おれおれ証明書作成

ここでは、秘密鍵(server.key)、公開鍵(server.csr)、デジタル証明書(server.crt)を作成します。

Step 1. 秘密鍵(server.key)作成

秘密鍵 は、公開鍵デジタル証明書 を作成する際に必要なので、一番先に作成しておきます。

形式の秘密鍵形式RSA
暗号化方式128bit AES
鍵長1024バイト
秘密鍵作成Raw Code(S)Raw Code(T)
# cd /etc/httpd/conf

# openssl genrsa -aes128 1024 > server.key
Generating RSA private key, 1024 bit long modulus
.................................++++++
...........................................................++++++
e is 65537 (0x10001)
Enter pass phrase:             【server.key のパスワード設定】
Verifying - Enter pass phrase: 【server.key のパスワード確認】

Step 2. 公開鍵(server.csr)作成

SSL 証明書を作成する元になる情報が書かれている CSR(Certificate Signing Request)を作成します。

項目入力値備考
Country NameJP国名
State or Province NameTokyo都道府県名
Locality NameMinato-Ku市町村名
Organization NameMy-Corp組織名
Organizational Unit NameMy-Corp部門名
Common Namemy-domain.comサーバ名、またはサイト名
Email Addresssupport@my-domain.comメールアドレス (空欄でもよい)
公開鍵作成Raw Code(S)Raw Code(T)
# openssl req -new -key server.key > server.csr
Enter pass phrase for server.key: 【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) [GB]:JP                      ※ 国名
State or Province Name (full name) [Berkshire]:Tokyo      ※ 都道府県名 
Locality Name (eg, city) [Newbury]:Minato-Ku              ※ 市町村名 
Organization Name (eg, company) [My Company Ltd]:My-Corp  ※ 組織名 
Organizational Unit Name (eg, section) []:My-Corp         ※ 部門名 
Common Name (eg, your name or your server's hostname) []:my-domain.com   ※ サーバ名、またはサイト名 
Email Address []:support@my-domain.com                    ※ メールアドレス(空欄でもよい)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:           ※ 証明書を破棄する時に必要になるパスワード(空欄でもよい)
An optional company name []:       ※ 組織名(空欄でもよい)

Step 3. デジタル証明書(server.crt)作成

SSL 通信には CA(Certification Authority、認証局。 VeriSign 等)が発行した証明書が必要ですが、おれおれなので、自分自身でデジタル証明書(server.crt)を作成してしまいましょう。

証明書の形式X.509
証明書の有効期限1年(365日)
デジタル証明書作成Raw Code(S)Raw Code(T)
# openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt
Signature ok
subject=/C=JP/ST=Tokyo/L=Minato-Ku/O=My-Corp/OU=My-Corp/CN=my-domain.com/emailAddress=support@my-domain.com
Getting Private key
Enter pass phrase for server.key: 【server.key のパスワード】

Step 4. Apache 起動パスワード無効化

Apache 再起動時にパスワードを求められるようになるので、パスワードを求めないようにします。

Apache 起動パスワード無効化Raw Code(S)Raw Code(T)
# mv server.key server.key.back

# openssl rsa -in server.key.back > server.key
Enter pass phrase for server.key.back:  【server.key のパスワード】
writing RSA key

おれおれ証明書設定、及び接続確認

Step 1. 証明書設定、およびサービス再起動

mod_ssl パッケージを導入すると以下の場所にコンフィグファイル ssl.conf が生成されるので、そのファイルを編集し、作成した証明書を設定します。

証明書設定・適用Raw Code(S)Raw Code(T)
# cd /etc/httpd/conf.d/

# cp -p ssl.conf ssl.conf.org

# vi /etc/httpd/conf.d/ssl.conf
・・・
SSLCertificateFile /etc/httpd/conf/server.crt
SSLCertificateKeyFile /etc/httpd/conf/server.key
・・・

# service httpd restart

証明書と秘密鍵の格納場所について

/etc/httpd/conf/server.crt/etc/httpd/conf/server.key を事前に該当場所に配置しておいてください。

Step 2. 動作確認

最後に、https://my-domain.com へ接続できることを確認します。

以上、Apache おれおれ証明書作成 でした。