3月 25, 2013

HTTPSでWebページを公開

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

SSLのインストール

まず,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の設定を行なっていきます。


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に追加

<virtualhost _default_:443>
 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
</VirtualHost>


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 comments:

コメントを投稿