Opensourcetechブログ

OpensourcetechによるNGINX/Kubernetes/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

Let's EncryptでNginx1.9.9をSSL化 & 2015年のNginxを振り返る

メリークリスマス、鯨井貴博@opensourcetechです。

 

今回は、Nginxの Advent Calendar 2015のラスト(第25日)を兼ねた記事となります。

qiita.com

 

Let's EncryptでNginx1.9.9をSSL化

今回は12月3日にPublic BetaとなったLet's Encryptを使ったみたかったので、

NginxのSSL証明書として使用することにしてみることにしました。

letsencrypt.org

f:id:opensourcetech:20151217165826p:plain

 

 

いつも通り、手元のPC上の仮想マシンで試そうと思っていたのですが、

以下の条件を満たす必要があることが分かりました。

①独自ドメインを取得している

②証明書取得時に、Let's EncryptからWebサーバのTCP80にアクセス可能

 

 

まず①への対応としては、

今年のOSC徳島2015のブースで知り合ったMyDNSさんで独自ドメインを取得することにしました。

(opensourcetech.mydns.jpをゲット!!)

www.mydns.jp

  www.mydns.jp

 

ドメインの取得については、

トップページのJOIN USからアカウント登録をすれば、

ドメイン情報の登録も出来、後工程で確保するグルーバルIPアドレスを

DNSのレコードとして追加できるようになります。

f:id:opensourcetech:20151217164939p:plain

f:id:opensourcetech:20151217164955p:plain

f:id:opensourcetech:20151217165003p:plain

f:id:opensourcetech:20151217165005p:plain

 

 また、②への対応としては事務所等のルータのFW設定を変更し、

外部からTPC80へアクセス出来るようにするか、

クラウドサービスを利用するか考えましたが、

せっかくの機会なので後者でやってみることにしました。

 

そして、選択したのは、AWS

こちらも登録の必要がありますが、今ならクリスマスサービスや

条件付ですが12か月無料利用可能とのことでしたので、

登録し、CentOS7(64bits)のインスタンスを使用することにしました。

 

AWS(Amazon Web Service)

aws.amazon.com

f:id:opensourcetech:20151217165555p:plain

 

 

ここからはAWS上に作成したCentOS7へSSHでリモートアクセスし 、

作業を行います。

 

とりあえず、現在の状況を確認しておきます。

cat /etc/redhat-release

rpm -q python

f:id:opensourcetech:20151217191755p:plain

間違いなく、CentOS7であり、pythonも2.7です。

※使用するOSによっては、pythonが2.6の事がありますが、

 let's encryptを使用する為には2.7へバージョンアップする必要があります。

 

let's encryptクライアントをGithubから取得する為、

gitをインストールします。

yum -y install git

rpm -q git

f:id:opensourcetech:20151217191759p:plain

f:id:opensourcetech:20151217191803p:plain

 

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

これでカレントディレクトリにletsencryptクライアントがコピーされます。

f:id:opensourcetech:20151217191806p:plain

f:id:opensourcetech:20151217191809p:plain

 

手に入れたletsencrpytディレクトリ内にある、

letsencrypt-autoスクリプトを実行します。

cd letsencrypt

./letsencrypt-auto --help

上記を実施することで必要なソフトウェアなどが全て入手出来ます。

なんて楽なんでしょう、ある意味怖いですがw

f:id:opensourcetech:20151217191813p:plain

f:id:opensourcetech:20151217191817p:plain

f:id:opensourcetech:20151217191820p:plain

f:id:opensourcetech:20151217191822p:plain

f:id:opensourcetech:20151217191825p:plain

f:id:opensourcetech:20151217191828p:plain

 

 

環境構築の最後にはusageも表示荒れますが、

nginxについては実験的なサポートとのことですので、

今後のバージョンアップ等に期待し、

今回は証明書のみ作成し、nginxのSSL設定で使用することにしました。

./letsencrypt-auto certonly --standalone -d www.opensourcetech.mydns.jp

f:id:opensourcetech:20151217191832p:plain

 

なお、上記を実行した際に、

Let's Encryptから今回構築するWebサーバのTCP80へアクセスがあるようで、

webサーバソフトウェアが起動している場合、

以下のようにエラーとなりますので、あらかじめ停止しておいて下さい。

※Fw設定などもお忘れなく。

f:id:opensourcetech:20151217191835p:plain

 

正常に動作した場合、

以下のようにE-mailアドレスの入力を求められます。

特に、今回使用するドメインに関係するものでなくていいようです。

f:id:opensourcetech:20151217191839p:plain

Agreeを選択すれば、完了!

f:id:opensourcetech:20151217191841p:plain

 

/etc/letsencrypt/live/www.opensourcetech.mydns.jpディレクトリ配下に、

cert.pem、chain.pem、fullchain.pem、privkey.pemという4つのファイルが出来ました。

cert.pemは証明書、chain.pemは中間証明書、fullchain.pemは証明書と中間証明を含んだもの、privkey.pemは秘密鍵となります。

f:id:opensourcetech:20151217191844p:plain

 

nginxにつては/etc/yum.repos.dに公式レポジトリファイルを追加し、

インストールします。

nginx.repo

-------

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/

gpgcheck=0

enabled=1

f:id:opensourcetech:20151217191846p:plain

 

現在の最新版であるnginx1.9.9をインストールし、設定を追加します。

yum -y install nginx-1.9.9

nginx -V

以前は、デフォルトで有効かされていなかったと思うのですが、

sslモジュールがデフォルトで有効化されていたことを発見しました。

※どのバージョンからだろう??

f:id:opensourcetech:20151222111633p:plain

 

/etc/nginx/conf.d/default.confのserverディレクティブに、

以下を追加します。

listen 443;

server_name www.opensourcetech.mydns.jp;

ssl on;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_certificate /etc/letsencrypt/live/www.opensourcetech.mydns.jp/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/www.opensourcetech.mydns.jp/privkey.pem;

f:id:opensourcetech:20151217191848p:plain

 

systemctl start nginx.serviceでnginxを起動後、

lsof -i:80でnginxの起動確認をします。

f:id:opensourcetech:20151217191851p:plain

 

 

あとは、クライアントのブラウザから、

https://www.opensourcetech.mydns.jpへアクセスすれば、

Let's Encryptの証明書にて動作していることが確認できます。

90日間の有効期間となっていますが、

正式版となった場合自動で期間の更新がされるようなので今後に期待です。

f:id:opensourcetech:20151217191853p:plain

f:id:opensourcetech:20151217191856p:plain

f:id:opensourcetech:20151217191859p:plain

 

 

 

2015年のNginx と HTTPの動き

 

今年一年も、約1ヶ月のインターバルでのリリースがされました。

また、更新内容を見ると、

HTTP/2.0(旧SPDY)やSSLに関する部分が頻繁に追加・修正されておりますね。

http://nginx.org/en/CHANGES

 
2015 02 09 Hello HTTP/2, Goodbye SPDY
  http://blog.chromium.org/2015/02/hello-http2-goodbye-spdy-http-is_9.html

2015 02 10 1.7.10(mainline version)

2015 03 24 1.7.11(mainline version)

2015 04 07 1.7.12(mainline version)
             1.6.3 (stable version)

2015 04 21 1.8.0(stable version)

2015 04 28 1.9.0(mainline version)

2015 05 15 HTTP/2.0(RFC7540)文書化
 http://www.rfc-editor.org/rfc/rfc7540.txt

2015 05 25 1.9.1(mainline version)

2015 06 16 1.9.2(mainline version)

2015 07 14 1.9.3(mainline version)

2015 08 18 1.9.4(mainline version)

2015 09 22 1.9.5(mainline version) (spdy → http_v2)

2015 09 22-24 nginx.conf at San Francisco
  https://www.nginx.com/nginxconf/
  https://www.nginx.com/category/events/nginxconf/

2015 10 27 1.9.6(mainline version)

2015 11 17 1.9.7(mainline version)

2015 12 08 1.9.8(mainline version)

2015 12 09 1.9.9(mainline version)

 

 

 最後まで読んで頂き、ありがとうございます!

来年もどのような動きが、Web周り・nginxであるか、

楽しみにしておきましょう!

 

We Love Nginx!

See you again!!

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

Opensourcetech by Takahiro Kujirai