手順
1. OpenSSLのインストール
ラズパイのパッケージにすでに含まれているが、なければインストール
sudo apt-get install openssl
インストールされているかの確認は
openssl
と打つとインストールされていればプロンプトが
OpenSSL>
になる。※exit
で抜けれる。
2. 秘密鍵の生成
今回はApache2配下にフォルダを作成してそこに保存することとした。
sudo mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
sudo openssl genrsa -des3 -out server.key 1024
pi@raspberrypi ~ $ sudo openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.................++++++
.................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:パスワード入力
Verifying - Enter pass phrase for server.key:パスワード再入力
このままだとApache起動のたびにパスワード入力を求められるためEncriptを解除しましょう。
sudo openssl rsa -in server.key -out server.key
pi@raspberrypi ~ $ sudo openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:先ほど設定したパスワードを入力
writing RSA key
3. サーバ証明書の生成
まずは要求ファイルを作成します。
sudo openssl req -new -days 3650 -key server.key -out server.csr
pi@raspberrypi ~ $ sudo openssl req -new -days 3650 -key server.key -out server.csr
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]:Tokyo
Locality Name (eg, city) []:xxx
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx
Organizational Unit Name (eg, section) []:xxx
Common Name (e.g. server FQDN or YOUR name) []:127.0.0.1:443 #今回はローカルループバックアドレスを指定
Email Address []:mail@sample.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:空白
An optional company name []:空白
これで要求ファイルが生成できたので証明書を発行しましょう。
sudo openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
pi@raspberrypi ~ $ sudo openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Signature ok
subject=/C=JP/ST=Tokyo/L=xxx/O=xxx/OU=xxx/CN=127.0.0.1:443/emailAddress=mail@sample.com
Getting Private key
成功するとフォルダには3つのファイルが存在しているはずです。
pi@raspberrypi ~ $ ls -l
-rw-r--r-- 1 root root 912 Jun 21 18:26 server.crt #証明書
-rw-r--r-- 1 root root 684 Jun 21 18:12 server.csr #証明書要求ファイル(ここまできたら不要)
-rw-r--r-- 1 root root 887 Jun 21 18:08 server.key #秘密鍵
盗まれないようパーミッションは変更しておこうね!
sudo chmod 400 server.*
4. Apacheの設定
ApacheのインストールでSSLモジュールが標準でインストールされています。
これを有効化しましょう。
sudo a2enmod ssl
その後、作成した証明書などを適用するため下記フォルダに移動します。
cd /etc/apache2/sites-available/
フォルダ配下にある「default-ssl.conf」ファイルを編集します。
①要求ファイルのCommon Nameに設定したローカルループバックアドレスを追加
ServerName 127.0.0.1:443
②証明書と秘密鍵の場所を指定
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
1 <IfModule mod_ssl.c>
2 <VirtualHost _default_:443>
3 ServerAdmin webmaster@localhost
4 ServerName 127.0.0.1:443 #追加
5 DocumentRoot /var/www
6 <Directory />
7 Options FollowSymLinks
8 AllowOverride None
9 </Directory>
10 <Directory /var/www/>
11 Options Indexes FollowSymLinks MultiViews
12 AllowOverride None
13 Order allow,deny
14 allow from all
15 </Directory>
16
17 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
18 <Directory "/usr/lib/cgi-bin">
19 AllowOverride None
20 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
21 Order allow,deny
22 Allow from all
23 </Directory>
24
25 ErrorLog ${APACHE_LOG_DIR}/error.log
26
27 # Possible values include: debug, info, notice, warn, error, crit,
28 # alert, emerg.
29 LogLevel warn
30
31 CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
32
33 # SSL Engine Switch:
34 # Enable/Disable SSL for this virtual host.
35 SSLEngine on
36
37 # A self-signed (snakeoil) certificate can be created by installing
38 # the ssl-cert package. See
39 # /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
40 # If both key and certificate are stored in the same file, only the
41 # SSLCertificateFile directive is needed.
42 #SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem #コメントアウト
43 #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key #コメントアウト
44 SSLCertificateFile /etc/apache2/ssl/server.crt #追加
45 SSLCertificateKeyFile /etc/apache2/ssl/server.key #追加
(省略)
ここまでできたらいよいよSSLサイトを有効化します。
sudo a2ensite default-ssl
Apacheを再起動して出来上がり
sudo service apache2 restart
5. SSLサイトにアクセスしてみよう
https://RaspberryPiに設定されているアドレス
にアクセスすればOK!