Project

General

Profile

Actions

httpsでアクセスできるようにする

Let's Encryptを頼ろうと思ったのですが、dip.jpドメインですでにたくさん登録されていて受け付けられない、とエラーが出てしまったので、オレオレ証明書で妥協します。

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 restart

この時点で、https://hogehoge.dip.jp へアクセスできるはずです(snakeoilな証明書が使われるので、ブラウザに怒られますが)。

openssl.cnfをいじる

openssl.cnfは/etc/ssl/と/usr/lib/ssl/の2つのパスにあるのですが、/usr/lib/ssl/にあるのはシンボリックリンクなので、エディタで開くのはどちらでもOkです。

  • [ usr_cert ] のnsCertTypeをserverにします。
  • [ v3_ca ] のnsCertTypeをsslCA,emailCAにします。
  • [ v3_ca ] のKeyUsageをcRLSign, keyCertSignにします。

上記設定は http://blog.kotemaru.org/2016/09/03/openssl-ca-cert.html を参考にさせていただきました。

ルート証明書を作る

まずPCブラウザ用のルート証明書をつくり、それをもとにAndroid機用のルート証明書を作ります。

openssl genrsa 2048 > ca.key
openssl req -new -key ca.key > ca.csr
 必要な情報を入力
mkdir demoCA
cd demoCA
mkdir private
mkdir crl
mkdir certs
mkdir newcerts
echo "01" > serial
touch index.txt
cd ..
openssl ca -create_serial -days 10957 -batch -keyfile ca.key -selfsign -extensions v3_ca -infiles ca.csr > ca.crt

上記コマンドの羅列でできたca.crtを、TeraTermのSSH SCP機能等何らかの手段でWindows PCにコピーします。
そのあと、http://dev.hinaloe.net/2014/07/android-unable-install-ca-cert/ の手順でhogehoge.cerというファイルを作り、Windows PCからLinux PCへコピーします。
そして、2つの証明書をApacheがWeb配信できるディレクトリにコピーします。

sudo cp ca.crt /var/www/html
sudo cp hogehoge.cer /var/www/html

この時点で、PCやスマホのブラウザからhttp://hogehoge.dip.jpを開けば証明書をダウンロードできる状態になっているはずです。

サーバ証明書を作る

openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr
 必要な情報を入力
openssl ca -days 1826 -cert ca.crt -keyfile ca.key -in server.csr > server.crt

なお、サーバ証明書に署名するときに以下のようなエラーが出た場合は、 http://stackoverflow.com/questions/6976127/signing-a-certificate-with-my-ca を参考に、/usr/lib/ssl/openssl.cnfを開いて、[policy_match]のstateOrProvinceNameをoptionalに書き換えてからもう一度やればOkです。

The stateOrProvinceName field needed to be the same in the
CA certificate (Kanawaga) and the request (Kanagawa)

あとは、サーバ証明書のファイル等をApacheが参照するディレクトリにコピーします。

sudo cp server.crt /etc/ssl/certs
sudo chmod 444 /etc/ssl/certs/server.crt
sudo cp server.key /etc/ssl/private
sudo chmod 640 /etc/ssl/private/server.key
sudo chgrp ssl-cert /etc/ssl/private/server.key

そして、/etc/apache2/sites-available/default-ssl.conf を開いて、snakeoilのところを修正して保存します。

SSLCertificateFile    /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

最後に、Apacheを再起動します。

sudo service apache2 restart

アクセス可能かどうかテストする

以下の手順で、httpsでアクセスできる状態であることを確かめてください。

  1. ブラウザから http://hogehoge.dip.jp にアクセスする。
  2. ルート証明書のリンクをクリックして、ブラウザにインストールする
  3. ブラウザから https://hogehoge.dip.jp にアクセスする。


Count of this page : 252

Updated by mole lord about 2 years ago · 1 revisions