在LNMP或Nginx上配置NameCheap免費(fèi)SSL證書
簡單來說HTTP協(xié)議傳輸是不安全的,可能會(huì)存在被劫持(如運(yùn)營商或其他劫持者劫持來插入廣告),HTTPS是一直相對來說要安全一些的,使用SSL證書來加密傳輸數(shù)據(jù)。目前有很多SSL證書的獲取途徑,如namecheap購買域名贈(zèng)送(Comodo PositiveSSL)、Let's Encrypt、其他免費(fèi)SSL證書和自購等渠道。
SSL需要有一個(gè)獨(dú)立IP,也就是一個(gè)獨(dú)立IP只能對應(yīng)一個(gè)SSL。SNI技術(shù)的出現(xiàn),一個(gè)IP只能對應(yīng)一個(gè)SSL的時(shí)代早就已經(jīng)過去,目前除了XP及較老的安卓版本外都已經(jīng)支持SNI,實(shí)現(xiàn)多域名虛擬主機(jī)的SSL/TLS認(rèn)證。(什么是SSL?)
一、準(zhǔn)備工作
1、需要Nignx已經(jīng)編譯ssl 模塊(lnmp一鍵安裝包已經(jīng)編譯安裝上),如果沒有需要重新編譯,方法可以參考Nginx無縫升級。
2、再NameCheap已注冊/轉(zhuǎn)移域名或購買主機(jī)產(chǎn)品,且購買是在購物車上添加了免費(fèi)SSL(PositiveSSL)。如果有其他自購的證書步驟是基本差不多的。
二、使用OpenSSL生成證書 (注:一下藍(lán)色加粗字為執(zhí)行時(shí)輸入的命令!)
1、生成RSA密鑰和CSR證書,下面以vpser.net域名為例:
vpser:~# cd /usr/local/nginx/conf/
vpser:/usr/local/nginx/conf# openssl req -new -sha256 -newkey rsa:2048 -nodes -keyout m.0794baidu.com.key -out m.0794baidu.com.csr
Generating RSA private key, 2048 bit long modulus
.....+++
.+++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN //輸入國家簡寫
State or Province Name (full name) [Some-State]:ShanDong //省市
Locality Name (eg, city) []:JiNan???????????????????????????? //城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:VPSer?? //組織名稱或公司名稱
Organizational Unit Name (eg, section) []:????????? //可以不用填
Common Name (eg, YOUR name) []:m.0794baidu.com? ? ?//輸入要配置ssl的域名,如m.0794baidu.com,注意vpser.net.com 和m.0794baidu.com 屬于不同的域名,目前一般寫帶www的,不www的會(huì)自動(dòng)給加上。
Email Address []:admin@vpser.net ? ? ? ? ? ? ? ? ? ? //輸入郵箱
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:???????? //可以不用填
An optional company name []:???????????? //可以不用填
按上面的注釋輸入相關(guān)信息后,會(huì)在目錄下面生成vpser.net.csr這個(gè)文件,執(zhí)行cat m.0794baidu.com.csr
將下面以-----BEGIN CERTIFICATE REQUEST-----開頭到-----END CERTIFICATE REQUEST-----結(jié)尾的全部內(nèi)容復(fù)制下來。我們需要使用這個(gè)m.0794baidu.com.csr文件里面的內(nèi)容去NameCheap生成SSL證書。
li88-99:/usr/local/nginx/conf# cat m.0794baidu.com.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIBzTCCATYCAQAwgYwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhTaGFuRG9uZzEO
MAwGA1UEBxMFSmlOYW4xEjAQBeNVBAoTCUp1bkdlSG9zdDEOMAwGA1UECxMFanVu
Z2UxEjAQBgNVBAMTCVNoaUp1baBMaTEiMCAGCSqGSIbcDQEJARYTYWRtaW5AanVu
Z2Vob3N0LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0R9hda1NJdoO
2tbvHevVY3fdpdn8ESpSewHC9yc9zVoc0tz9Ww5EfpDV9L222xv/Z8DlDf2pUfIG
X7F15qIQJZ/VCUDNxS5Y7bjNTzduMq8yQnqkB6h/dpnlFTJlDQrAl6vaoOhBcB5L
hMLAQBf1V8800MIn3nfxb9E6aoydSk8CAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GB
AJxQOaFHra/ILos8+HO8Wn/2bhfWAUR4ovyRGKMB/n0BQlHPfNhKbILRv9KI5EUL
dc6HCf3AALetjNiPHrfpJOCj4Ljqchu3WeodthuwRd9hzhZHCf43UiopofbfRzMp
lmAJFuUwN93IgFSrslCh66JaQceNa5x/TQIsmviuKZGC
-----END CERTIFICATE REQUEST-----
三、NameCheap生成數(shù)字證書
1、登錄NameCheap.com后,會(huì)在后臺(tái)首頁提示你有一個(gè)未激活的SSL認(rèn)證產(chǎn)品,如下圖:
點(diǎn)擊上面的“SSL Certificates Page”鏈接。
2、激活SSL證書
點(diǎn)擊“Activate Now”即可激活SSL產(chǎn)品。
3、向CA(數(shù)字證書頒發(fā)機(jī)構(gòu))提交OpenSSL生成的證書。
Web服務(wù)器軟件沒有Nginx,只有選擇other,下面的csr,填寫m.0794baidu.com.csr的內(nèi)容,即前面要求復(fù)制下來的以-----BEGIN CERTIFICATE REQUEST-----開頭到-----END CERTIFICATE REQUEST-----結(jié)尾的內(nèi)容,是全部包括----的開頭,且不要改動(dòng)文件內(nèi)容。
4、選擇域名管理員郵箱,郵箱必須是能夠接收到郵件。同時(shí)確認(rèn)一下生成證書時(shí)填寫的信息是否正確。
5、提交訂單
檢查一下上面的信息是否正確,然后點(diǎn)擊“Submit Order”。
6、郵箱驗(yàn)證
過幾分鐘或10幾分鐘郵箱里就會(huì)受到一封Comodo寄來的驗(yàn)證郵件,如下圖:
點(diǎn)開上面的鏈接,然后輸入上面的優(yōu)惠碼。
驗(yàn)證完成!
7、驗(yàn)證完成后幾分鐘就會(huì)受到Comodo寄來的數(shù)字證書。
四、Nginx虛擬主機(jī)設(shè)置SSL
1、下載郵件附件里的www_vpser_net.zip,上傳到/usr/local/nginx/conf 下面。
2017年2月update:壓縮包內(nèi)文件有些變化,變化后只有兩個(gè)文件:www_vpser_net.crt和www_vpser_net.ca-bundle。
合并方法:cat www_vpser_net.crt www_vpser_net.ca-bundle > m.0794baidu.com.crt
因?yàn)檫@是COMODO的證書,還需要一些合并操作,方法如下:
cat www_vpser_net.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > m.0794baidu.com.crt
COMODO的證書不要將AddTrustExternalCARoot.crt合并到m.0794baidu.com.crt的證書里,要不然ssllabs測試時(shí)會(huì)提示:Chain issues - Contains anchor
2、Nginx虛擬主機(jī)添加SSL
具體完整配置文件如下:
server
{
listen 443 ssl; ? //如果需要spdy也可以加上,lnmp1.2及其后版本都默認(rèn)支持spdy,lnmp1.3 nginx 1.9.5以上版本默認(rèn)支持http2
server_name m.0794baidu.com vpser.net; ? ? //這里是你的域名
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/m.0794baidu.com; ? ? ? ? ? ?//網(wǎng)站目錄
ssl_certificate /usr/local/nginx/conf/m.0794baidu.com.crt; ? ?//前面郵件收到zip文件合并操作后的文件
ssl_certificate_key /usr/local/nginx/conf/m.0794baidu.com.key; ? //前面生成的密鑰
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
include wordpress.conf; ?//這個(gè)是偽靜態(tài)根據(jù)自己的需求改成其他或刪除
#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;
}
將以上內(nèi)容按照自己的配置修改,LNMP一鍵安裝包用戶添加到/usr/local/nginx/conf/vhost/域名.conf 文件最后面,其他用戶按實(shí)際情況而定,一般加在nginx.conf 里任意一個(gè)server {}的后面即可。
然后執(zhí)行/usr/local/nginx/sbin/nginx -t 檢查配置是否有錯(cuò)誤,執(zhí)行/usr/local/nginx/sbin/nginx -s reload 重新載入配置文件使其生效。
li88-99:/usr/local/nginx/conf# /usr/local/nginx/sbin/nginx -t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
li88-99:/usr/local/nginx/conf#/usr/local/nginx/sbin/nginx -s reload
另外如果有iptables之類的防火墻需要將443端口加入運(yùn)行的規(guī)則里。
如果想讓http的訪問都調(diào)到https上,不再允許http訪問的話可以將原來80的虛擬主機(jī)配置替換為如下配置:
server?{
listen?80;
server_name?m.0794baidu.com;
return?301?http://m.0794baidu.com$request_uri;
}
五、測試
在Chrome、Firefox、IE7下面訪問 http://m.0794baidu.com 測試均沒有問題,歡迎各位測試反饋結(jié)果。如果是完整只https訪問的話一般還需要修改網(wǎng)站后臺(tái)的設(shè)置,一下模板上寫死的地址等。
PS:需要SSL且不想花費(fèi)太多的話,可以選擇NameCheap注冊或轉(zhuǎn)入域名獲得免費(fèi)SSL,VPS偵探也會(huì)在網(wǎng)站上不定期更新一些NameCheap的域名優(yōu)惠碼。
>>轉(zhuǎn)載請注明出處:VPS偵探 本文鏈接地址:http://m.0794baidu.com/manage/namecheap-free-ssl-nginx.html






















用了多種方法都不行,看了軍哥的文章突然發(fā)現(xiàn),nginx的配置放在最外面了,一時(shí)看錯(cuò)了浪費(fèi)了很多時(shí)間。目前就要弄網(wǎng)頁內(nèi)的圖片等素材的https://了
順序反了,所以出現(xiàn)評論中的問題,應(yīng)該是
cat PositiveSSLCA.crt >> jungehost_com.crt
一步即可
@mikj, 按樓下的方法手動(dòng)合并crt文件試試
?? ?? 一直是這個(gè)錯(cuò)誤
/usr/local/nginx/sbin/nginx -t
[emerg]: SSL_CTX_use_PrivateKey_file("/usr/local/nginx/conf/nodesvpscom.pem") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
configuration file /usr/local/nginx/conf/nginx.conf test failed
很詳細(xì)的教程 謝謝
@安之, 到bbs.vpser.net 發(fā)上配置看看,可能是沒加上php的解析執(zhí)行部分。
軍哥,按照你的方法在nginx.conf配置了,但是貌似只能顯示靜態(tài)網(wǎng)頁,動(dòng)態(tài)php文件就提示No input file specified.,查了這種提示的解決方法貌似都無效啊,求教
cat jungehost_com.crt >> PositiveSSLCA.crt

mv PositiveSSLCA.crt jungehost_com.crt
用這個(gè)合并會(huì)出問題
最后手動(dòng)合并解決的
[emerg]: SSL_CTX_use_PrivateKey_file("/usr/local/nginx/conf/52t.pem") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
configuration file /usr/local/nginx/conf/nginx.conf test failed
求解~~
@Yeasiz, 我感覺是生成的RSA密鑰有問題,重新生成試試
@Yeasiz, 好吧,發(fā)現(xiàn)之前的問題也是我提出來的。。。到現(xiàn)在還沒解決。。。
同樣的結(jié)果
/usr/local/nginx/sbin/nginx -t
[emerg]: SSL_CTX_use_PrivateKey_file("/usr/local/nginx/conf/tuitecn.pem") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
configuration file /usr/local/nginx/conf/nginx.conf test failed
@慢性咽炎, 后面肯定還有那個(gè)地方有錯(cuò)誤,都有提示,發(fā)上來。
/usr/local/nginx/conf/nginx.conf test failed
我的也是這個(gè) ,請教博主怎么修改啊
你好,請問一下我在配置之後,使用/usr/local/nginx/sbin/nginx -t檢查,發(fā)現(xiàn)有以下錯(cuò)誤:
[emerg]: SSL_CTX_use_PrivateKey_file("/usr/local/nginx/conf/biebercn.pem") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
configuration file /usr/local/nginx/conf/nginx.conf test failed
請問如何修正?感謝~
?? ?? 謝謝學(xué)習(xí)了