Help us understand the problem. What is going on with this article?

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;

    # 〜省略〜

}
walkers
起業準備中(BtoB SaaS)←Notia事業責任者←マツリカ創業メンバー←フリーランス←失敗←起業準備←東芝情報システム(SIer)◆エンジニア+プロダクトマネージャー(PdM)+営業+CS、育成に必要なことは何でも◆ @gotandarb を運営◆UB Ventures Thinka 2期生
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away