自己証明書を使って、httpsで簡易なHTMLページにアクセスする

  • 投稿日:
  • by ライブラリ編集局

この記事では事前に作成したwebページに 自己証明書を作成し、httpsでアクセスする設定について説明していきます。

尚、OSはCentOS6(64bit)を対象にしています。

※事前確認

mod_sslをインストールすると自己証明書が稼動状態になりますが、
webページにそのままアクセスするとエラーが表示されてしまいます。

ですので、今回は認証局につないでサーバ証明書を発行し、 ローカルPCにその認証局を登録する
方法について記述しています。

webページでエラーが表示されても構わなければ、認証局の設定を省いて実行してもテストページが表示できます。

1.sslモジュールのインストール

まずは証明書を作成するためにmod sslをインストールします。

# yum -y install mod_ssl

2.認証用秘密鍵(ca.key)の作成

# openssl genrsa -des3 -out /etc/httpd/conf/ca.key -rand rand.dat 1024

認証用のパスワードを入力する
Enter pass phrase for /etc/httpd/conf/ca.key: パスワードを入力

確認の為、上と同じパスワードを入力
Verifying - Enter pass phrase for /etc/httpd/conf/ca.key: パスワードを入力

3.認証局宛証明書(ca.crt)の作成

# openssl req -new -x509 -days 365 -key /etc/httpd/conf/ca.key -out /etc/httpd/conf/ca.crt

認証用のパスフレーズを入力
Enter pass phrase for /etc/httpd/conf/ca.key: パスワードを入力

入力例

Country Name (2 letter code) [XX]:JP                    #国コードを入力
State or Province Name (full name) [Berkshire]:Osaka    #都道府県を入力
Locality Name (eg, city) [Newbury]:Tyu-Ouku             #市町村を入力
Organization Name (eg, company) [My Company Ltd]:DENET  #組織名を入力
Organizational Unit Name (eg, section) []:              #組織内ユニット名を入力
Common Name (eg, your name or your server's hostname) []:testweb.com
                                                        #サーバ名(ホスト名)を入力〈自分のドメイン名にしてください〉
Email Address []:test@testweb.com                       #管理者メールアドレスを入力〈自分のメールアドレスにしてください〉

4.サーバ用秘密鍵(server.key)の作成

# openssl genrsa -des3 -out /etc/httpd/conf/server.key -rand rand.dat 1024

サーバ用のパスワードを入力
Enter pass phrase for /etc/httpd/conf/server.key: パスワードを入力

確認の為、上と同じパスワードを入力
Verifying - Enter pass phrase for /etc/httpd/conf/server.key: パスワードを入力

5.署名要求書(server.csr)の作成

認証局に送るデジタル証明書のリクエストファイル作成

# openssl req -new -key /etc/httpd/conf/server.key -out /etc/httpd/conf/server.csr

サーバ用のパスフレーズを入力
Enter pass phrase for /etc/httpd/conf/server.key: パスワードを入力

入力例

Country Name (2 letter code) [XX]:JP                        #国コードを入力
State or Province Name (full name) [Berkshire]:Osaka        #都道府県を入力
Locality Name (eg, city) [Newbury]:Tyu-Ouku                 #市町村を入力
Organization Name (eg, company) [My Company Ltd]:DENET      #組織名を入力
Organizational Unit Name (eg, section) []:                  #組織内ユニット名を入力
Common Name (eg, your name or your server's hostname) []:testweb.com
                                                            #サーバ名(ホスト名)を入力〈自分のドメイン名にしてください〉
Email Address []:test@testweb.com                           #管理者メールアドレスを入力〈自分のメールアドレスにしてください〉
A challenge password []:                                    #何も入力しないでエンターキー押下
An optional company name []:                                #何も入力しないでエンターキー押下

6.サーバ用秘密鍵(server.key)からのパスフレーズ削除

念のためのバックアップをとっておく

# cp /etc/httpd/conf/server.key /etc/httpd/conf/server.key.bak

server.keyからのパスフレーズ削除

# openssl rsa -in /etc/httpd/conf/server.key.bak -out /etc/httpd/conf/server.key

サーバ用のパスフレーズを入力
Enter pass phrase for /etc/httpd/conf/server.key.bak: パスワードを入力
writing RSA key

7.サーバ用証明書(server.crt)の作成

mod_sslを取得

# wget http://www.modssl.org/source/mod_ssl-2.8.28-1.3.37.tar.gz

ダウンロードしたファイルを展開

# tar zxvf mod_ssl-2.8.28-1.3.37.tar.gz

8.サーバ用証明書の作成

パスの移動

# cd /etc/httpd/conf/

取得したmod_ssl付属のsign.shスクリプトでサーバ用デジタル証明書を作成

# mod_ssl-2.8.28-1.3.37/pkg.contrib/sign.sh server.csr

CA用のパスフレーズを入力
Enter pass phrase for ./ca.key: パスワードを入力

Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'JP'
stateOrProvinceName :ASN.1 12:'Osaka'
localityName :ASN.1 12:'Tyu-Ouku'
organizationName :ASN.1 12:'Denet'
commonName :ASN.1 12:'testweb.com'
emailAddress :IA5STRING:'test@testweb.com'
Certificate is to be certified until Jun 30 06:32:57 2015 GMT (365 days)

"y"を入力してエンターキー押下

Sign the certificate? [y/n]:y

"y"を入力してエンターキー押下

1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries</br>
    Data Base Updated</br>
    CA verifying: server.crt <-> CA cert</br>
    server.crt: OK

9.ブラウザインポート用のバイナリDERフォーマット(ca.der)の作成

# openssl x509 -inform pem -in /etc/httpd/conf/ca.crt -outform der -out /etc/httpd/conf/ca.der

10.作成した各ファイルの所有権変更

# chmod -R 400 /etc/httpd/conf/server.* /etc/httpd/conf/ca.*

11.ssl設定ファイルの変更

# vi /etc/httpd/conf.d/ssl.conf

106行目周辺

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again. A test
#   certificate can be generated with `make certificate' under
#   built time. Keep in mind that if you've both a RSA and a DSA
#   certificate you can configure both in parallel (to also allow
#   the use of DSA ciphers, etc.)
SSLCertificateFile /etc/httpd/conf/server.crt #追加

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/httpd/conf/server.key #追加

12.apacheを起動

# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]