はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> Webサーバ >> 通信内容暗号化(OpenSSL & mod_SSL) 〜 Webページ編 〜
動作確認 [ FC1 / FC2 / FC3 / FC4 / FC5 / FC6 / Fedora7 / Fedora8 / Fedora9 / Fedora10 / Fedora11 / Fedora12 / Fedora13 / Fedora14 / Fedora15 / Fedora16 / Fedora17 / CentOS4 / CentOS5 / CentOS6 ]
  1. sslとは・・・(HTTPS : Hypertext Transfer Protocol Security)暗号化通信
  2. sslモジュールのインストール
  3. CA用秘密鍵(ca.key)の作成
  4. CA用証明書(ca.crt)の作成
  5. サーバ用秘密鍵(server.key)の作成
  6. 署名要求書(server.csr)の作成
  7. サーバ用秘密鍵(server.key)からのパスフレーズ削除
  8. サーバ用証明書(server.crt)の作成
    事前準備
    サーバ用証明書の作成
  9. ブラウザインポート用のバイナリDERフォーマット(ca.der)の作成
  10. 作成した各ファイルの所有権変更
  11. ssl設定ファイルの変更
  12. apacheの再起動
  13. クライアントへのCA証明書インストール
  14. 公開前の準備

■ sslとは・・・(HTTPS : Hypertext Transfer Protocol Security)暗号化通信

SSL(Secure Sockets Layer)は簡単に言うと、データを暗号化してやり取りするやり方の決まりです。
SSLを使用すると送信するデータが暗号化されるので、プライバシーに関わる情報を第三者に見られずにやり取りすることができます。
ApacheでSSLを利用するには、モジュールを組み込む必要があります。
このモジュールを組み込み、Apacheでデータの暗号化を行い通信する構築方法を紹介します。

■ sslモジュールのインストール

# yum -y install mod_ssl

■ CA用秘密鍵(ca.key)の作成

乱数データ(rand.dat)を使用してCA用の鍵を作成
# openssl genrsa -des3 -out /etc/httpd/conf/ca.key -rand rand.dat 1024
0 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
......++++++
....................++++++
e is 65537 (0x10001)
ca用のパスワードを入力
Enter pass phrase for /etc/httpd/conf/ca.key:
確認の為、上と同じパスワードを入力
Verifying - Enter pass phrase for /etc/httpd/conf/ca.key:

■ CA用証明書(ca.crt)の作成

CA用証明書を作成
# openssl req -new -x509 -days 365 -key /etc/httpd/conf/ca.key -out /etc/httpd/conf/ca.crt
CA用のパスフレーズを入力
Enter pass phrase for /etc/httpd/conf/ca.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]:Chiba
市町村を入力
Locality Name (eg, city) [Newbury]:Yachiyo
組織名を入力
Organization Name (eg, company) [My Company Ltd]:Private_CA
組織内ユニット名を入力
Organizational Unit Name (eg, section) []:Admin
サーバ名(ホスト名)を入力
Common Name (eg, your name or your server's hostname) []:fedora.kajuhome.com
管理者メールアドレスを入力
Email Address []:[email protected]

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

サーバ用秘密鍵の作成(鍵長1024ビット)
# openssl genrsa -des3 -out /etc/httpd/conf/server.key -rand rand.dat 1024
0 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
..........++++++
.......++++++
e is 65537 (0x10001)
サーバ用のパスワードを入力
Enter pass phrase for /etc/httpd/conf/server.key:
確認の為、上と同じパスワードを入力
Verifying - Enter pass phrase for /etc/httpd/conf/server.key:

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

CAに送るデジタル証明書のリクエストファイル作成
# openssl req -new -key /etc/httpd/conf/server.key -out /etc/httpd/conf/server.csr
サーバ用のパスフレーズを入力
Enter pass phrase for /etc/httpd/conf/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]:Chiba
市町村を入力
Locality Name (eg, city) [Newbury]:Yachiyo
組織名を入力
Organization Name (eg, company) [My Company Ltd]:HomeServer
組織内ユニット名を入力
Organizational Unit Name (eg, section) []:Self
アクセス名(http://<アクセス名>)を入力
Common Name (eg, your name or your server's hostname) []:kajuhome.com
管理者メールアドレスを入力
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
何も入力しないでエンターキー押下
A challenge password []:
何も入力しないでエンターキー押下
An optional company name []:

■ サーバ用秘密鍵(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

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

■ 事前準備

mod_sslモジュールは日々バージョンアップしています。
最新版は『www.modssl.org』で確認してください。

mod_sslを取得
# wget http://www.modssl.org/source/mod_ssl-2.8.28-1.3.37.tar.gz
--15:12:37--  http://www.modssl.org/source/mod_ssl-2.8.28-1.3.37.tar.gz
           => `mod_ssl-2.8.28-1.3.37.tar.gz'
www.modssl.org をDNSに問いあわせています... 195.30.6.168
www.modssl.org[195.30.6.168]:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 754,277 [application/x-tar]

100%[====================================>] 820,417       89.12K/s    ETA 00:00

15:12:47 (80.68 KB/s) - `mod_ssl-2.8.28-1.3.37.tar.gz' を保存しました [820417/820417]


ダウンロードしたファイルを展開
# tar zxvf mod_ssl-2.8.28-1.3.37.tar.gz
mod_ssl-2.8.28-1.3.37/ANNOUNCE
mod_ssl-2.8.28-1.3.37/CHANGES
        :
        :
mod_ssl-2.8.28-1.3.37/pkg.sslsup/mkcert.sh
mod_ssl-2.8.28-1.3.37/pkg.sslsup/sslsup.patch

■ サーバ用証明書の作成

パスの移動
# cd /etc/httpd/conf/

上記で取得したmod_ssl付属のsign.shスクリプトでサーバ用デジタル証明書を作成
# /root/mod_ssl-2.8.28-1.3.37/pkg.contrib/sign.sh server.csr
CA signing: server.csr -> server.crt:
Using configuration from ca.config
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   :PRINTABLE:'Chiba'
localityName          :PRINTABLE:'Yachiyo'
organizationName      :T61STRING:'HomeServer'
organizationalUnitName:PRINTABLE:'Self'
commonName            :PRINTABLE:'kajuhome.com'
emailAddress          :IA5STRING:'[email protected]'
Certificate is to be certified until Oct  4 06:29:19 2005 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
Data Base Updated
CA verifying: server.crt <-> CA cert
server.crt: OK

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

CA証明書(PEMフォーマット)からバイナリDERフォーマットで作成
# openssl x509 -inform pem -in /etc/httpd/conf/ca.crt -outform der -out /etc/httpd/conf/ca.der

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

所有権の変更
# chmod -R 400 /etc/httpd/conf/server.* /etc/httpd/conf/ca.*

■ ssl設定ファイルの変更

ssl設定ファイル変更
# vi /etc/httpd/conf.d/ssl.conf
#   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

■ apacheの再起動

apache(httpd)を再起動する
【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/httpd restart

【Fedora16以降 の場合】
# systemctl restart httpd.service

■ クライアントへのCA証明書インストール

クライアントより[https://サーバのアドレス/]でアクセスすると下記の画面が表示されます。

上記の「証明書の表示」をクリックすると下記の画面が表示されます。

以下の手順を行ない、クライアントからダウンロード出来る様に追加します。

ca.derを公開ページのトップへコピーします
# cp /etc/httpd/conf/ca.der /var/www/html/

パーミッションの変更
# chmod 440 /var/www/html/ca.der

所有者・グループの変更
# chown apache:apache /var/www/html/ca.der

任意のホームページより、上記ca.derにリンクを貼り、ダウンロードできる様にします。
当サイトの証明書はここよりダウンロードできます。←こんな感じで・・・
(当サイトはSSLにする必要がないので意図的にダウンロードできない様にしています。)

商用などで使用する場合は、きちんと証明機関に発行(有料)してもらってください。

  1. 証明書のダウンロード
    • 一度、適当なフォルダにダウンロードして、ダウンロードした「ca.der」を右クリックより証明書のインストールを選択します。
    • 下記画面で「保存」をクリックし、適当なフォルダにダウンロードします。


  2. 証明書のインポート
    • ダウンロードした「ca.der」を右クリックして、「証明書のインストール」を選択すると、画面が表示されるので「次へ」をクリックします。


    • 下記の様に選択し、「次へ」をクリックします。


    • 「完了」ボタンをクリックします


    • インポートの完了

■ 公開前の準備

ホームページを外部に公開するに当たって、ルータの設定が必要です。
ルータのポート開閉は、ご自分のルータ取扱説明書をご覧ください。

DNS名で接続するには事前にドメイン名の取得を行っている必要があります。(以下は代表的なものであり、また、当サイトが使用させて頂いております)

■ コンテンツ関連

■ その他

ページ先頭へ

Copyright(©)2004-2018 First home server construction. All Right Reserved.