Conoha에서 Rails를 Let’s Encrypt로 상시 SSL과 HTTP2에 대응시킨다

먼저 자신이 관리하는 도메인의 방향을 Conoha로 향하십시오.

이름의 네임서버를 변경하는 경우



이런 느낌으로 변경할 수 있습니다.



코노하 네임서버 정보


ns-a1.conoha.io
ns-a2.conoha.io
ns-a3.conoha.io

Conoha에서 도메인 설정하기



그런 다음이 화면에서 도메인을 설정합니다.



A 레코드에 서버의 IP 주소를 설정하십시오.
잠시 시간이 지나면 반영됩니다.



도메인이 당겨지면 letsencrypt를 얻을 준비 OK입니다.

※전제조건으로서, 소유하고 있는 도메인으로 WEB 사이트가 공개되고 있을 필요가 있습니다.

letsencrypt 취득 참고 URL

your_domain_name 및 your_mail_address
자신의 도메인 이름과 이메일 주소로 바꾸십시오.

SSL 기능을 제공하기 위해 mod_ssl 모듈을 도입합니다.
$ yum -y install mod_ssl

letsencrypt 저장소를 복제
$ git clone https://github.com/letsencrypt/letsencrypt

letsencrypt 도움말 보기
$ ./letsencrypt-auto --help

Conoha에서 Ruby on Rails를 선택한 경우 path


./letsencrypt-auto certonly --webroot -w /usr/share/nginx/html -d your_domain_name -m your_mail_address --agree-tos

증명서 보관소


/etc/letsencrypt/live/your_domain_name/

포트 443 개방


# 確認
$ firewall-cmd --list-all

# アクセス許可
$ firewall-cmd --permanent --add-service=https

# 設定を有効化
$ firewall-cmd --reload

# 確認
$ firewall-cmd --list-all

nginx의 Version Up



nginx가 낡으면 http2에 대응할 수 없기 때문에, update 합니다.
vim /etc/yum.repos.d/nginx.repo
# nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

nginx update
yum update -y nginx

취약한 암호화 제품군 비활성화


$ mkdir /etc/nginx/ssl
$ cd /etc/nginx/ssl
$ openssl dhparam 2048 -out dhparam.pem

nginx 보관소


/etc/nginx/conf.d/sample.conf

nginx 기본 설정
server {
    listen       80;
    location ~ ^/sample/assets/(.*) {
        alias /home/rails/sample/public/assets/$1;
    }

    location /sample {
        proxy_pass http://unicorn;
    }
}

변경 후 nginx 설정



참고
server {
    listen      80;
    listen [::]:80;
    return 301 https://$host$request_uri;
}

server{
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    server_name your_domain_name;

    ssl_certificate /etc/letsencrypt/live/your_domain_name/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain_name/privkey.pem;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;';
    client_max_body_size 64M;

    # OCSP Staplingを有効にする
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/your_domain_name/fullchain.pem;

    # OCSP StaplingのためにはDNSリゾルバを指定する必要がある
    resolver 8.8.8.8;

    location ~ ^/sample/assets/(.*) {
        alias /home/rails/sample/public/assets/$1;
    }

    location /sample {
        proxy_pass http://unicorn;
    }
}

Nginx 리로드


systemctl restart nginx

Rails를 데몬으로 시작


bundle exec rails s -p 8080 &

Qualys SSL Report의 보안 평가



이번 설정했을 때의 보안 평가는 A였습니다.



이것으로 Conoha에서 상시 SSL과 HTTP2에 대응할 수 있었습니다.

SSL의 대응을 할 수 있었으므로, 지금 화제의 Line-bot을 만들어 보는 것도 좋네요.

좋은 웹페이지 즐겨찾기