Edited at

Let’s Encryptを利用して無料で証明書を発行する

More than 3 years have passed since last update.


環境

CentOS: 6.7 (Sakura VPS)

Nginx: 1.8.1

Python: 2.6.6 → 2.7.11 ※2.7系の最新バージョン:2016/02/11現在

※Python 2.6.6のままだと正常にインストールできないので、Updateする


Pyenvのインストール


ターミナル

git clone git@github.com:yyuu/pyenv.git ~/.pyenv



Pyenvの設定


~/.bash_profile

if [ -e "$HOME/.pyenv" ]; then

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
fi


Python 2.7.11 インストール


ターミナル

pyenv install 2.7.11



デフォルトのPythonを2.7.11に設定


ターミナル

pyenv global 2.7.11



サービスの停止

NginxやApacheを起動している場合、いったん停止させる。


ターミナル

sudo service nginx stop



iptablesの設定

80番ポート、443番ポートが解放されていることを確認する。

解放されていない場合は、解放し、サービスを再起動する。


/etc/sysconfig/iptables

(省略)

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
(省略)


ターミナル

sudo service iptables restart



Let's Encryptのインストール


ターミナル

git clone https://github.com/letsencrypt/letsencrypt



Let's Encryptの実行環境確認

以下のコマンドを実行することで、必要なものがない場合、自動で色々インストールしてくれる。


ターミナル

cd letsencrypt/

./letsencrypt-auto --help


Let's Encryptを実行し、証明書を発行

管理者のメールアドレスを「--email」の後にセットし、発行したい証明書のドメインを「-d」の後に指定する(複数選択可能)。そして、コマンドを実行すると証明書が発行される。


ターミナル

./letsencrypt-auto certonly --standalone --email your_email_address@gmail.com -d localhost.com -d www.localhost.com


途中、Let's Encryptの利用規約画面が表示され、同意が求められます。利用規約に同意できる場合、Agree(同意)を選択してください(もちろん同意しないと使用できません)。

発行された証明書のシンボリックリンクは、以下のディレクトリ内に存在する。

「/etc/letsencrypt/live/www.localhost.com/」

「/etc/letsencrypt/live/localhost.com/」


NginxのSSL設定

Nginxの場合は、以下のように設定することで、https接続ができるようになる。


/etc/nginx/nginx.conf


# 〜省略〜

server {
listen 443;
server_name www.localhost.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.localhost.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.localhost.com/privkey.pem;
root /var/www/html;

# 〜省略〜

}



httpをhttpsにリダイレクトさせる設定


/etc/nginx/nginx.conf


# 〜省略〜

+server {
+ listen 80;
+ server_name www.localhost.com;
+ return 301 https://$host$request_uri;
+}
server {
listen 443;
server_name www.localhost.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.localhost.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.localhost.com/privkey.pem;
root /var/www/html;

# 〜省略〜

}