茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671263 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00007.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2019/2/19 7:26:32

免費SSL安全證書Let's Encrypt安裝使用教程(附Nginx/Apache配置)

https://www.vpser.net/build/letsencrypt-free-ssl.html

Let's Encrypt是最近很火的一個免費SSL證書發行項目,Let's Encrypt是由ISRG提供的免費免費公益項目,自動化發行證書,但是證書只有90天的有效期。適合個人使用或者臨時使用,不用再忍受自簽發證書不受瀏覽器信賴的提示。前段時間一直是內測,現在已經開放了。本教程安裝不需要停掉當前Web服務(Nginx/Apache),直接生成證書,廢話不多說下面開始:

目前已經更新爲新工具certbot,使用教程: https://www.vpser.net/build/letsencrypt-certbot.html 配置文件和以前一樣。
建議使用git 以後有了新版更新方便,沒安裝的話Debian/Ubuntu:apt-get install git ,CentOS:yum install git-core
git clone https://github.com/letsencrypt/letsencrypt.git
cd letsencrypt

不安裝git的話:wget -c https://github.com/letsencrypt/letsencrypt/archive/master.zip && unzip master.zip && cd letsencrypt-master

LNMP一鍵安裝包都是Nginx/Apache默認支持ssl不需要另外單獨編譯,接下來先以 LNMP一鍵安裝包爲例,LNMP用戶可以直接參考此教程:

執行:mkdir -p /home/wwwroot/域名/.well-known/acme-challenge 創建臨時目錄,當然這個.well-known/acme-challenge前面的目錄要替換爲你自己的網站目錄,根據你自己的實際情況修改。

正式開始生成證書

接下來正式進行證書生成操作:
./letsencrypt-auto certonly --email 郵箱 -d 域名 --webroot -w /網站目錄完整路徑 --agree-tos
如果多個域名可以加多個-d 域名,注意替換上面的郵箱、域名和網站目錄,注意這裏的網站目錄完整路徑只是你單純的網站目錄也就是虛擬主機配置文件裏的,如Nginx虛擬主機配置裏的root,Apache虛擬主機配置裏的DocumentRoot。

首先Let's Encrypt會檢測系統安裝一些依賴包,安裝完依賴包會有藍色的讓閱讀TOS的提示,Agree回車 稍等片刻就行了可添加--agree-tos參數屏蔽該窗口。
生成證書後會有如下提示:

IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
e-mails sent to
[email protected]
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.vpser.net/fullchain.pem. Your cert will
expire on 2016-03-07. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Let's
Encrypt so making regular backups of this folder is ideal.
- If like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Nginx虛擬主機的設置


接下來進行配置Nginx虛擬主機文件,完整配置如下:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

include wordpress.conf; #這個是僞靜態根據自己的需求改成其他或刪除
#error_page 404 /404.html;
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf; #lnmp 1.0及之前版本替換爲include fcgi.conf;
#include pathinfo.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 12h;
}

access_log off;
}

需將上述配置根據自己的實際情況修改後,添加到虛擬主機配置文件最後面。

添加完需要執行:/etc/init.d/nginx reload 重新載入配置使其生效。


開啓後有效期內必須只能https訪問,不確定的話不要開啓。

Apache虛擬主機上的設置

Apache在生成證書後也需要修改一下apache的配置文件 /usr/local/apache/conf/httpd.conf ,查找httpd-ssl將前面的#去掉。

然後再執行:

Apache 2.2如下:
cat >/usr/local/apache/conf/extra/httpd-ssl.conf<<EOF
Listen 443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl

SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
SSLProxyCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
SSLHonorCipherOrder on

SSLProtocol all -SSLv2 -SSLv3
SSLProxyProtocol all -SSLv2 -SSLv3
SSLPassPhraseDialog builtin

SSLSessionCacheTimeout 300


SSLStrictSNIVHostCheck on
NameVirtualHost *:443
EOF

Apache 2.4如下:

cat >/usr/local/apache/conf/extra/httpd-ssl.conf<<EOF
Listen 443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl

SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
SSLProxyCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
SSLHonorCipherOrder on

SSLProtocol all -SSLv2 -SSLv3
SSLProxyProtocol all -SSLv2 -SSLv3
SSLPassPhraseDialog builtin

SSLSessionCacheTimeout 300

Mutex sysvsem default

SSLStrictSNIVHostCheck on
EOF

並在對應apache虛擬主機配置文件的 最後</VirtualHost>下面添加上SSL部分的配置文件:


<VirtualHost *:443>
DocumentRoot /home/wwwroot/www.vpser.net #網站目錄
ServerName www.vpser.net:443 #域名
ServerAdmin [email protected] #郵箱
ErrorLog "/home/wwwlogs/www.vpser.net-error_log" #錯誤日誌
CustomLog "/home/wwwlogs/www.vpser.net-access_log" common #訪問日誌
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.vpser.net/fullchain.pem #改一下里面的域名就行
SSLCertificateKeyFile /etc/letsencrypt/live/www.vpser.net/privkey.pem #改一下里面的域名就行
<Directory "/home/wwwroot/www.vpser.net"> #網站目錄
SetOutputFilter DEFLATE
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>


需將上述配置根據自己的實際情況修改後,添加到虛擬主機配置文件最後面。注意要重啓apache使其實現。執行:/etc/init.d/httpd restart 重啓Apache使其生效。

下面說一下可能會遇到的問題:

1、國內DNS服務商可能會不行,目前已知dnspod、cloudxns不行dnspod、cloudxns目前已經可以

Namecheap、Route 53的都可以。

2、Linode福利或IPv6用戶福利

可能目前Linode用戶應該遇到了
An unexpected error occurred:
There were too many requests of a given type :: Error creating new registration :: Too many registrations from this IP
Please see the logfiles in /var/log/letsencrypt for more details.
這個不一定是因爲IP註冊的次數過多,可能是因爲IPv6的事,具體解決方法如下:
執行:sysctl -w net.ipv6.conf.all.disable_ipv6=1 來臨時禁用IPv6
再生成證書後執行:sysctl -w net.ipv6.conf.all.disable_ipv6=0 再來解除禁用IPv6

3、如果啓用了防火牆需要將443端口加入允許規則,一般iptables可以參考:
https://www.vpser.net/security/linux-iptables.html

4、如果LNMP下訪問http://abc.com/.well-known/acme-challenge/**** 這個鏈接403的話是因爲默認LNMP 1.3的虛擬主機裏是禁止.開頭的隱藏文件及目錄的。需要將
location ~ /\.
{
deny all;
}
這段配置刪掉或註釋掉或在這段配置前面加上

location ~ /.well-known {
allow all;
}

以上配置代碼,然後重啓nginx。

證書續期

最後要說的是續期,因爲證書只有90天,所以建議60左右的時候進行一次續期,續期很簡單可以交給 crontab進行完成,執行:

cat >/root/renew-ssl.sh<<EOF
#!/bin/bash
mkdir -p /網站目錄完整路徑/.well-known/acme-challenge
/root/letsencrypt/letsencrypt-auto --renew-by-default certonly --email 郵箱 -d 域名 --webroot -w /網站目錄完整路徑 --agree-tos
/etc/init.d/nginx reload
EOF
chmod +x /root/renew-ssl.sh

注意要修改上面letsencrypt-auto的路徑爲你自己的,並且裏面的郵箱和域名也要修改。
再crontab裏添加上:0 3 */60 * * /root/renew-ssl.sh 具體 crontab教程點擊查看

2015.12.13更新
官網更新了參數,對本文進行了部分參數的調整。原-a webroot --webroot-path=/網站目錄完整路徑替換爲--webroot -w;--renew替換爲--renew-by-default;增加--agree-tos參數。

同時這裏提醒一下如果設置了http 301跳到https的用戶,再續期前還需要在nginx設置如下:
80端口的虛擬主機上需要添加上,不加的話會無法驗證的

location /.well-known/ {
add_header Content-Type 'text/plain;';
root /網站目錄完整路徑;
}

附完整的nginx下301 http跳到https的配置:


server
{
listen 80;
server_name www.vpser.net;
location /.well-known/ {
add_header Content-Type 'text/plain;';
root /網站目錄完整路徑;
}
location / {
return 301 https://www.vpser.net$request_uri;
}
}

目前就先說這些,有問題可以在本文章下部留言或到 VPS論壇發帖。


原文出處:免費SSL安全證書Let's Encrypt安裝使用教程(附Nginx/Apache配置) - 神馬文庫
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|