SEARCH

Linux Install

Android

Linux Tools

Linux AV

Linux Memo

WINDOWS

PROGRAM

動画 Memo

音楽 Memo

モバイルアプリ Memo

FILE FORMAT

PROTOCOL

DEVICE

BookMark

その他


ssl   

apache の設定

apache

yum -y install mod_ssl

SSL 設定

cd /etc/httpd/conf 
mkdir ssl.key -m 700
cd ssl.key
openssl genrsa 2048 > server.key
chmod 400 server.key
cd /etc/httpd/conf
openssl req -new -key ssl.key/server.key > server.csr
JP
Tokyo
Shinagawa-Ku
Exsample Company.
R&D
hostname.net
mailaddress
cd /etc/httpd/conf
mkdir ssl.crt 
cd ssl.crt

本物の場合はここで、認証局に csr を送って crt を返してもらう

オレオレ証明の場合は自分で署名する

cd ssl.crt
openssl x509 -in ../server.csr -days 365 -req -signkey ../ssl.key/server.key  > server.crt

/etc/httpd/conf.d/ssl.conf

SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
service httpd restart

ssl の設定

/etc/httpd/conf.d/ssl.conf

<VirtualHost *:443>
   ServerName ssl.example.com:443
   SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2
   SSLHonorCipherOrder on
   SSLCipherSuite EECDH+HIGH:EDH+HIGH:HIGH:MEDIUM:+3DES:!ADH:!RC4:!MD5:!aNULL:!eNULL:!SSLv2:!LOW:!EXP:!PSK:!SRP:!DSS:!KRB5
   SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
   SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
   # 中間証明書をダウンロードしてくる
   SSLCertificateChainFile /etc/httpd/conf/ssl.crt/【取得した中間証明書】.cer
 :
</VirtualHost>

http => https にリダイレクトする

/etc/httpd/conf/httpd.conf

<VirtualHost *:80>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>

Let's encrypt

install

yum install certbot --enablerepo=epel
certbot certonly --webroot -w /var/www/【documentroot】/ -d example.com --agree-tos -n --email=xxx@xxx.xxx

上記を実行すると

/var/www/html/.well-known/ が作成され、

http://example.com/.well-known/xxxxx

にアクセスがあり、そのドメイン(正確にはURL)を確かに所有していることが証明される。

ので、上記URLをアクセス可能にしておく必要がある。

※ 例えば、apache から他のシステムに丸ごと reverse proxy 等している場合は virtual host 内に下記を追加する必要がある

   ProxyPass /.well-known/ !
   ProxyPass / http://localhost:8080/
   ProxyPassReverse / http://localhost:8080/

/etc/httpd/conf.d/ssl.conf

 SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
 SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
server httpd restart

cron update

半月に一回更新チェックを行う
/etc/crontab

0 4 2 * * root /bin/certbot renew --post-hook "systemctl restart httpd" >> /var/tmp/cert.log
0 4 22 * * root /bin/certbot renew --post-hook "systemctl restart httpd" >> /var/tmp/cert.log