2013年3月25日月曜日

HTTPSでWebページを公開

外部から安全にアクセスするために,SSLを使ってHTTPSでの暗号化通信を導入します(`・ω・´)

まず,SSLを使用するためにopensslをインストールします。(apacheが入っている前提で話を進めます
sudo apt-get update
sudo apt-get install openssl

インストールできたら,opensslを使って自己証明書と鍵を作っていきます。
作業するフォルダに移動して,ルートになっておきます。
mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
sudo su

ここから,コマンド実行後に入力項目があるので,適宜入力していきます。

秘密鍵の作成

# openssl genrsa -aes128 1024 > server.key

以下表示内容
Generating RSA private key, 1024 bit long modulus
......................++++++
..++++++
e is 65537 (0x10001)
Enter pass phrase:  [パスワード入力]
Verifying - Enter pass phrase:  [パスワード入力]


公開鍵の作成

# openssl req -new -key server.key > 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) [AU]:  [てきとーに入力:JP]
State or Province Name (full name) [Some-State]:  [てきとーに入力:Nara]
Locality Name (eg, city) []:  [てきとーに入力:Nara-Shi]
Organization Name (eg, company) [Internet Widgits Pty Ltd]:  [てきとーに入力:Connecting The Dots]
Organizational Unit Name (eg, section) []:  [てきとーに入力:]
Common Name (e.g. server FQDN or YOUR name) []:  [てきとーに入力:]
Email Address []:  [てきとーに入力:]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  [空白]
An optional company name []:  [空白]


証明書の作成

# openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt

以下表示内容
Signature ok
subject=/C=JP/ST=Nara/L=Nara-Shi/O=Connecting The Dots/CN=
Getting Private key
Enter pass phrase for server.key:  [さっき入力したパスワード]


ここまでで,SSLを使用するために必要なファイルを生成することができました。
証明書は定期的に更新する必要があります。(-daysのオプションで有効期限を指定しています

あとは,apacheの設定を行なっていきます。

sslの有効化

cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/ssl.conf ssl.conf
sudo ln -s ../mods-available/ssl.load ssl.load
sudo a2enmod ssl 
cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/default-ssl ssl

sslの設定

以下の内容を/etc/apache2/sites-enabled/sslに追加

 SSLProtocol all -SSLv2
 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
 SSLCertificateFile /etc/apache2/ssl/server.crt
 SSLCertificateKeyFile /etc/apache2/ssl/server.key


apache再起動時のパスワード入力をなくす

cd /etc/apache2/ssl
sudo su
# mv server.key server.key.back
# openssl rsa -in server.key.back > server.key

以下表示内容
Enter pass phrase for server.key.back:  [上で入力したパスワードを入力]
writing RSA key



最後にapache再起動

sudo service apache2 restart
で,問題が無ければ完成!!



ここの内容は以下のサイトを参考にさせていただいています。




0 件のコメント:

コメントを投稿