筆記: Let's Encrypt + dehydrated

2019011716:45
Let's Encrypt  提供免費的 SSL 憑證,效期是 3 個月,到期時可再申請
   ( 申請的限制說明 Rate Limits )


dehydrated   則是一套能自動由 Let's Encrypt 下載 SSL 憑證的工具,
   可以方便的自動化更新 SSL 憑證,免去每三個月要手工更新的麻煩。





dehydrated 安裝筆記

$ git clone https://github.com/lukas2511/dehydrated.git

$ mkdir /etc/dehydrated

$ vi /etc/dehydrated/config
放這兩行

OCSP_MUST_STAPLE=yes
KEYSIZE=2048


$ vi /etc/dehydrated/domains.txt
放入要申請 SSL憑證的網址(可以多行)
www.xyz.com.tw


路徑設定
apache httpd.conf 設定
Alias /.well-known/acme-challenge /var/www/dehydrated
2.4
<Directory /var/www/dehydrated>
    Options None
    AllowOverride None
    Require all granted
</Directory>

2.2
<Directory /var/www/dehydrated>
    Options None
    Order allow,deny 
    Allow from all
</Directory>




第一次執行 需要同意條款:
$ sudo dehydrated --register --accept-terms

產生 SSL 憑證
$ sudo dehydrated  -c
會放在  /etc/dehydrated/certs/www.xyz.com.tw 目錄下
當 SSL 憑證過期時,再執行這個命令 即可自動更新

/etc/dehydrated/certs/www.xyz.com.tw 會產生 5 個檔案
cert.csr
cert.pem
chain.pem
fullchain.pem  (cert.pem + chain.pem)
privkey.pem


****
/etc/dehydrated/domains.txt 檔案中若有很多網址時
但只有一個網址憑證到期
可以只更新單一網站的憑證
sudo dehydrated  -c -d www.xyz.com.tw




apache httpd 2.4x設定

httpd.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so



extra/httpd-ssl.conf
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
SSLUseStapling on

<VirtualHost *:443>
  DocumentRoot "/home/www.xyz.com.tw/htdocs"
  ServerName www.xyz.comtw:443

  SSLEngine on

  SSLCertificateKeyFile /etc/dehydrated/certs/www.xyz.com.tw/privkey.pem
  SSLCertificateFile    /etc/dehydrated/certs/www.xyz.com.tw/fullchain.pem
  # 特別注意
  # /etc/dehydrated/certs/* 的檔案是只有 root 才能讀取
  # 要確定 httpd 有權限讀的到 /etc/dehydrated/certs/ 這個目錄
  # 不行讀的話 就將裏頭的檔案複製到別的地方, 並 chmod a+r *
</VirtualHost>

#另外 加入2行 來啟用 OCSP
#不然 Firefox  會出現 MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING
#似乎是放了 Let's encrypt 憑證就會有此問題,改用其他付費的憑證就沒問題 2020/3/10
<IfModule ssl_module>
::
::
#SSLStaplingResponderTimeout 5
#SSLStaplingReturnResponderErrors off
SSLUseStapling on    ##(default off)
SSLStaplingCache shmcb:logs/stapling_cache(128000)
</IfModule>

Firefox 會出現 MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING
nginx 解決 (付費購買的憑證,就不需這兩行)
加上兩行即可:
    ssl_stapling on;
    ssl_stapling_verify on;

如:

server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  xxx.com.tw;

        ssl_certificate     "/xxxx/fullchain.pem";
        ssl_certificate_key "/xxxx/privkey.pem";
::
    ssl_stapling on;
    ssl_stapling_verify on;
::
::
}


這裡可以檢測網站是否有啟用 OCSP 以及其它 SSL 狀況
DigiCert® SSL Installation Diagnostics Tool






apache traffic server 設定

ssl_multicert.config
dest_ip=* ssl_cert_name=fullchain.pem ssl_key_name=privkey.pem


records.conf 啟用 OCSP
CONFIG proxy.config.ssl.ocsp.enabled INT 1



dehydrated 下載的 Let's Encrypt SSL 憑證檔案
裝到 Traffic Server 7 / restart 後
Firefox 瀏覽網站會出現 MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING
但其他瀏覽器都無問題 (包括 Chrome / edge / Macos Safari / iPhone Safari / Android Chome)
怪的是,再等一分鐘後 Firefox 就能正常連上 https 網站

修改這個 ( default 60 secs)
CONFIG proxy.config.ssl.ocsp.update_period INT 10

其它 OCSP 相關的參數
CONFIG proxy.config.ssl.ocsp.request_timeout INT 10
CONFIG proxy.config.ssl.ocsp.cache_timeout INT 3600


----
其它參考

OCSP & CRL 介紹

HTTPS connection fails with "MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING"

How To Configure OCSP Stapling on Apache and Nginx

Check the Revocation Lists (CRL) and the OCSP status of an (SSL) Certificate

OCSP stapling error firefox

 


  •    (悄悄話) 1F
  • <悄悄話留言,不公開>