Nginx 下配置SSL證書的方法
更新時(shí)間:2010年08月24日 00:02:11 作者:
默認(rèn) Nginx 是沒有 ssl 模塊的,而我的 VPS 默認(rèn)裝的是 Nginx 0.7.63 ,順帶把 Nginx 升級到 0.7.64 并且 配置 ssl 模塊方法如下
1、Nginx 配置 ssl 模塊
默認(rèn) Nginx 是沒有 ssl 模塊的,而我的 VPS 默認(rèn)裝的是 Nginx 0.7.63 ,順帶把 Nginx 升級到 0.7.64 并且 配置 ssl 模塊方法如下:
下載 Nginx 0.7.64 版本,解壓 進(jìn)入解壓目錄:
wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
tar zxvf nginx-0.7.64.tar.gz
cd nginx-0.7.64
如果要更改header信息的話,
vi src/core/nginx.h
#define NGINX_VERSION "0.7.62"
#define NGINX_VER "nginx/" NGINX_VERSION
上面的版本號和nginx自己修改
編譯
[code]
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make
切記不要 make install
因?yàn)槭切【W(wǎng)站,用不著平滑升級,直接 killall -HUP nginx 重啟 nginx 即可。
OK,升級并且安裝好 ssl 模塊完畢,這里我把 Nginx 修改成了 zoulu,于是乎:

怎么樣,很有個(gè)性吧!
2、使用 OpenSSL 生成證書
①、生成RSA密鑰的方法
openssl genrsa -out privkey.pem 2048
有的證書要 1024 的,所以得:
openssl genrsa -out privkey.pem 1024
②、生成一個(gè)證書請求
openssl req -new -key privkey.pem -out cert.csr
會提示輸入省份、城市、域名信息等,重要的是,email 一定要是你的域名后綴的,比如 webmaster@zou.lu 并且能接受郵件!
這樣就有一個(gè) csr 文件了,提交給 ssl 提供商的時(shí)候就是這個(gè) csr 文件
(來源:http://www.lsproc.com/blog/nginx_ssl_config/)
直接 cat cert.csr
得到一大串字符,比如這樣:
-----BEGIN CERTIFICATE REQUEST-----
MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAkhCMQwwCgYDVQQH
EwNTSloxDzANBgNVBAoTBkZhbmZvdTESMBAGA1UEAxMJZzFuZm91LmRlMSIwIAYJ
KoZIhvcNAQkBFhN3ZWJtYXN0ZXJAZmFuZm91LmRlMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQC5l4PmZg6TCIpduefxq5gsLXN1JeQdBmUs+pEApeHmNoxE+R4k
VkQUJzLj5o3ltQGJzYrcIfru8NryQSxaT/5IjeFwS7nIMsx8KPkQQ71BJazsiZj+
CdLDRJj1m/SrjTsNrfYj4rFFS1FXq7uEDyreUx7fyAljx70jPSsGBOGwRQIDAQAB
oAAwDQYJKoZIhvcNAQEFBQADgYEACKCBQcnCq5yE3GFyN3NyxCQEvnspkIv9AqI4
FcwqyHPZWkupp3wfubHY80IwtfjlGlTSynzE7FZLVpcbNfKLnAYlYEwDY7NukJNy
pCbyqpJJXdAl3Jcun0NlLtSxTQpR+abO8va/BAO5Hp9h1rpSRtTdSJd2fC/owRV1
BfRuJnA=
-----END CERTIFICATE REQUEST-----
提交給你的 ssl 提供商即可,一般半個(gè)鐘頭到一天時(shí)間就會發(fā)給你證書,如圖:

把所有文件全部上傳到一個(gè)特定的目錄,比如我是上傳到 /root/zoulu/
這里,zoulukey.pem 和 zoulucert.csr 是自己在 VPS 生成的,剩下的都是證書簽發(fā)機(jī)構(gòu)頒發(fā)的。
一般情況下,直接用證書簽發(fā)機(jī)構(gòu)頒發(fā)的 crt 文件即可,比如 zou_lu.crt ,但是有很多證書簽發(fā)機(jī)構(gòu)默認(rèn)在 Firefox 中文版下是不會信任的,經(jīng)過仔細(xì)研究,終于發(fā)現(xiàn),原來得把證書簽發(fā)機(jī)構(gòu)辦法給你的 crt 文件也放入才行。
方法如下:
合并 PositiveSSLCA.crt (證書簽發(fā)機(jī)構(gòu)的 crt) 和 zou_lu.crt (自己域名的 crt)
cat zou_lu.crt >> PositiveSSLCA.crt
mv PositiveSSLCA.crt zou_lu.crt
或者直接用記事本打開,然后復(fù)制 PositiveSSLCA.crt 里面所有的內(nèi)容到 zou_lu.crt 最下方即可。
(來源:http://www.lsproc.com/blog/nginx_ssl_config/)
③、修改 Nginx 配置
listen 443;
server_name zou.lu;
index index.html index.htm index.php;
root /home/zoulu;
error_page 404 403 http://zou.lu;
ssl on;
ssl_certificate /root/zoulu/zou_lu.crt;
ssl_certificate_key /root/zoulu/zoulukey.pem;
其他的配置信息和一般站點(diǎn)的一樣,不再重復(fù)。
四、訪問測試結(jié)果
在 Firefox 英文版 / Chrome / Opera / Safari / IE 6、7、8 下均沒問題, https://zou.lu/ 在 Firefox 3.5.7 中文版下沒問題,遇到問題的童鞋,檢查你的系統(tǒng)時(shí)間,要是還不信任,那我也不是很清楚了,抱歉能力有限。
五、如何獲得免費(fèi)的證書
https://zou.lu/ 的證書是 PositiveSSL 簽發(fā)的,這是一家 Comodo 的 Reseller ,目前可以通過如下途徑獲得:
去 NameCheap.com 注冊、轉(zhuǎn)移一個(gè)域名或者購買一款空間就能獲得,而且是免費(fèi)一年的哦!
需要注意的是,NameCheap 注冊后頒發(fā)的證書沒有證書簽發(fā)機(jī)構(gòu)的 PositiveSSLCA.crt ,這里我就放一個(gè),為了大家安裝方便:
-----BEGIN CERTIFICATE-----
MIIFAzCCA+ugAwIBAgIQTM1KmltFEyGMz5AviytRcTANBgkqhkiG9w0BAQUFADCB
lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
SGFyZHdhcmUwHhcNMDYwOTE4MDAwMDAwWhcNMjAwNTMwMTA0ODM4WjBxMQswCQYD
VQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdT
YWxmb3JkMRowGAYDVQQKExFDb21vZG8gQ0EgTGltaXRlZDEXMBUGA1UEAxMOUG9z
aXRpdmVTU0wgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9T3lY
IpPJKD5SEQAvwKkgitctVR4Q57h/4oYqpOxe6eSSWJZUDfMXukGeFZFV78LuACAY
RYMm3yDMPbOhEzEKIVx5g3mrJBVcVvC0lZih2tIb6ha1y7ewwVP5pEba8C4kuGKe
joteK1qWoOpQ6Yj7KCpNmpxIT4O2h65Pxci12f2+P9GnncYsEw3AAcezcPOPabuw
PBDf6wkAhD9u7/zjLbTHXRHM9/Lx9uLjAH4SDt6NfQDKOj32cuh5JaYIFveriP9W
XgkXwFqCBWI0KyhIMpfQhAysExjbnmbHqhSLEWlN8QnTul2piDdi2L8Dm53X5gV+
wmpSqo0HgOqODvMdAgMBAAGjggFuMIIBajAfBgNVHSMEGDAWgBShcl8mGyiYQ5Vd
BzfVhZadS9LDRTAdBgNVHQ4EFgQUuMoR6QYxedvDlMboGSq8uzUWMaQwDgYDVR0P
AQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwewYDVR0fBHQwcjA4oDagNIYy
aHR0cDovL2NybC5jb21vZG9jYS5jb20vVVROLVVTRVJGaXJzdC1IYXJkd2FyZS5j
cmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9VVE4tVVNFUkZpcnN0LUhh
cmR3YXJlLmNybDCBhgYIKwYBBQUHAQEEejB4MDsGCCsGAQUFBzAChi9odHRwOi8v
Y3J0LmNvbW9kb2NhLmNvbS9VVE5BZGRUcnVzdFNlcnZlckNBLmNydDA5BggrBgEF
BQcwAoYtaHR0cDovL2NydC5jb21vZG8ubmV0L1VUTkFkZFRydXN0U2VydmVyQ0Eu
Y3J0MA0GCSqGSIb3DQEBBQUAA4IBAQAdtOf5GEhd7fpawx3jt++GFclsE0kWDTGM
MVzn2odkjq8SFqRaLZIaOz4hZaoXw5V+QBz9FGkGGM2sMexq8RaeiSY9WyGN6Oj5
qz2qPMuZ8oZfiFMVBRflqNKFp05Jfdbdx4/OiL9lBeAUtTF37r0qhujop2ot2mUZ
jGfibfZKhWaDtjJNn0IjF9dFQWp2BNStuY9u3MI+6VHyntjzf/tQKvCL/W8NIjYu
zg5G8t6P2jt9HpOs/PQyKw+rAR+lQI/jJJkfXbKqDLnioeeSDJBLU30fKO5WPa8Y
Z0nf1R7CqJgrTEeDgUwuRMLvyGPui3tbMfYmYb95HLCpTqnJUHvi
-----END CERTIFICATE-----
你也可以試試 Startssl 的證書,缺點(diǎn)是在舊電腦,沒有更新的情況下,IE 6是絕對不信任他的,詳見:http://blog.s135.com/startssl/
最后聲明一點(diǎn),受信任的 ssl 證書必須有獨(dú)立IP,或者說,一個(gè)IP只能對應(yīng)一個(gè)域名的證書,愛玩的朋友可以弄一個(gè)玩玩。
默認(rèn) Nginx 是沒有 ssl 模塊的,而我的 VPS 默認(rèn)裝的是 Nginx 0.7.63 ,順帶把 Nginx 升級到 0.7.64 并且 配置 ssl 模塊方法如下:
下載 Nginx 0.7.64 版本,解壓 進(jìn)入解壓目錄:
復(fù)制代碼 代碼如下:
wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
tar zxvf nginx-0.7.64.tar.gz
cd nginx-0.7.64
如果要更改header信息的話,
復(fù)制代碼 代碼如下:
vi src/core/nginx.h
#define NGINX_VERSION "0.7.62"
#define NGINX_VER "nginx/" NGINX_VERSION
上面的版本號和nginx自己修改
編譯
[code]
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make
切記不要 make install
因?yàn)槭切【W(wǎng)站,用不著平滑升級,直接 killall -HUP nginx 重啟 nginx 即可。
OK,升級并且安裝好 ssl 模塊完畢,這里我把 Nginx 修改成了 zoulu,于是乎:

怎么樣,很有個(gè)性吧!
2、使用 OpenSSL 生成證書
①、生成RSA密鑰的方法
openssl genrsa -out privkey.pem 2048
有的證書要 1024 的,所以得:
openssl genrsa -out privkey.pem 1024
②、生成一個(gè)證書請求
openssl req -new -key privkey.pem -out cert.csr
會提示輸入省份、城市、域名信息等,重要的是,email 一定要是你的域名后綴的,比如 webmaster@zou.lu 并且能接受郵件!
這樣就有一個(gè) csr 文件了,提交給 ssl 提供商的時(shí)候就是這個(gè) csr 文件
(來源:http://www.lsproc.com/blog/nginx_ssl_config/)
直接 cat cert.csr
得到一大串字符,比如這樣:
-----BEGIN CERTIFICATE REQUEST-----
MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAkhCMQwwCgYDVQQH
EwNTSloxDzANBgNVBAoTBkZhbmZvdTESMBAGA1UEAxMJZzFuZm91LmRlMSIwIAYJ
KoZIhvcNAQkBFhN3ZWJtYXN0ZXJAZmFuZm91LmRlMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQC5l4PmZg6TCIpduefxq5gsLXN1JeQdBmUs+pEApeHmNoxE+R4k
VkQUJzLj5o3ltQGJzYrcIfru8NryQSxaT/5IjeFwS7nIMsx8KPkQQ71BJazsiZj+
CdLDRJj1m/SrjTsNrfYj4rFFS1FXq7uEDyreUx7fyAljx70jPSsGBOGwRQIDAQAB
oAAwDQYJKoZIhvcNAQEFBQADgYEACKCBQcnCq5yE3GFyN3NyxCQEvnspkIv9AqI4
FcwqyHPZWkupp3wfubHY80IwtfjlGlTSynzE7FZLVpcbNfKLnAYlYEwDY7NukJNy
pCbyqpJJXdAl3Jcun0NlLtSxTQpR+abO8va/BAO5Hp9h1rpSRtTdSJd2fC/owRV1
BfRuJnA=
-----END CERTIFICATE REQUEST-----
提交給你的 ssl 提供商即可,一般半個(gè)鐘頭到一天時(shí)間就會發(fā)給你證書,如圖:

把所有文件全部上傳到一個(gè)特定的目錄,比如我是上傳到 /root/zoulu/
這里,zoulukey.pem 和 zoulucert.csr 是自己在 VPS 生成的,剩下的都是證書簽發(fā)機(jī)構(gòu)頒發(fā)的。
一般情況下,直接用證書簽發(fā)機(jī)構(gòu)頒發(fā)的 crt 文件即可,比如 zou_lu.crt ,但是有很多證書簽發(fā)機(jī)構(gòu)默認(rèn)在 Firefox 中文版下是不會信任的,經(jīng)過仔細(xì)研究,終于發(fā)現(xiàn),原來得把證書簽發(fā)機(jī)構(gòu)辦法給你的 crt 文件也放入才行。
方法如下:
合并 PositiveSSLCA.crt (證書簽發(fā)機(jī)構(gòu)的 crt) 和 zou_lu.crt (自己域名的 crt)
cat zou_lu.crt >> PositiveSSLCA.crt
mv PositiveSSLCA.crt zou_lu.crt
或者直接用記事本打開,然后復(fù)制 PositiveSSLCA.crt 里面所有的內(nèi)容到 zou_lu.crt 最下方即可。
(來源:http://www.lsproc.com/blog/nginx_ssl_config/)
③、修改 Nginx 配置
listen 443;
server_name zou.lu;
index index.html index.htm index.php;
root /home/zoulu;
error_page 404 403 http://zou.lu;
ssl on;
ssl_certificate /root/zoulu/zou_lu.crt;
ssl_certificate_key /root/zoulu/zoulukey.pem;
其他的配置信息和一般站點(diǎn)的一樣,不再重復(fù)。
四、訪問測試結(jié)果
在 Firefox 英文版 / Chrome / Opera / Safari / IE 6、7、8 下均沒問題, https://zou.lu/ 在 Firefox 3.5.7 中文版下沒問題,遇到問題的童鞋,檢查你的系統(tǒng)時(shí)間,要是還不信任,那我也不是很清楚了,抱歉能力有限。
五、如何獲得免費(fèi)的證書
https://zou.lu/ 的證書是 PositiveSSL 簽發(fā)的,這是一家 Comodo 的 Reseller ,目前可以通過如下途徑獲得:
去 NameCheap.com 注冊、轉(zhuǎn)移一個(gè)域名或者購買一款空間就能獲得,而且是免費(fèi)一年的哦!
需要注意的是,NameCheap 注冊后頒發(fā)的證書沒有證書簽發(fā)機(jī)構(gòu)的 PositiveSSLCA.crt ,這里我就放一個(gè),為了大家安裝方便:
-----BEGIN CERTIFICATE-----
MIIFAzCCA+ugAwIBAgIQTM1KmltFEyGMz5AviytRcTANBgkqhkiG9w0BAQUFADCB
lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
SGFyZHdhcmUwHhcNMDYwOTE4MDAwMDAwWhcNMjAwNTMwMTA0ODM4WjBxMQswCQYD
VQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdT
YWxmb3JkMRowGAYDVQQKExFDb21vZG8gQ0EgTGltaXRlZDEXMBUGA1UEAxMOUG9z
aXRpdmVTU0wgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9T3lY
IpPJKD5SEQAvwKkgitctVR4Q57h/4oYqpOxe6eSSWJZUDfMXukGeFZFV78LuACAY
RYMm3yDMPbOhEzEKIVx5g3mrJBVcVvC0lZih2tIb6ha1y7ewwVP5pEba8C4kuGKe
joteK1qWoOpQ6Yj7KCpNmpxIT4O2h65Pxci12f2+P9GnncYsEw3AAcezcPOPabuw
PBDf6wkAhD9u7/zjLbTHXRHM9/Lx9uLjAH4SDt6NfQDKOj32cuh5JaYIFveriP9W
XgkXwFqCBWI0KyhIMpfQhAysExjbnmbHqhSLEWlN8QnTul2piDdi2L8Dm53X5gV+
wmpSqo0HgOqODvMdAgMBAAGjggFuMIIBajAfBgNVHSMEGDAWgBShcl8mGyiYQ5Vd
BzfVhZadS9LDRTAdBgNVHQ4EFgQUuMoR6QYxedvDlMboGSq8uzUWMaQwDgYDVR0P
AQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwewYDVR0fBHQwcjA4oDagNIYy
aHR0cDovL2NybC5jb21vZG9jYS5jb20vVVROLVVTRVJGaXJzdC1IYXJkd2FyZS5j
cmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9VVE4tVVNFUkZpcnN0LUhh
cmR3YXJlLmNybDCBhgYIKwYBBQUHAQEEejB4MDsGCCsGAQUFBzAChi9odHRwOi8v
Y3J0LmNvbW9kb2NhLmNvbS9VVE5BZGRUcnVzdFNlcnZlckNBLmNydDA5BggrBgEF
BQcwAoYtaHR0cDovL2NydC5jb21vZG8ubmV0L1VUTkFkZFRydXN0U2VydmVyQ0Eu
Y3J0MA0GCSqGSIb3DQEBBQUAA4IBAQAdtOf5GEhd7fpawx3jt++GFclsE0kWDTGM
MVzn2odkjq8SFqRaLZIaOz4hZaoXw5V+QBz9FGkGGM2sMexq8RaeiSY9WyGN6Oj5
qz2qPMuZ8oZfiFMVBRflqNKFp05Jfdbdx4/OiL9lBeAUtTF37r0qhujop2ot2mUZ
jGfibfZKhWaDtjJNn0IjF9dFQWp2BNStuY9u3MI+6VHyntjzf/tQKvCL/W8NIjYu
zg5G8t6P2jt9HpOs/PQyKw+rAR+lQI/jJJkfXbKqDLnioeeSDJBLU30fKO5WPa8Y
Z0nf1R7CqJgrTEeDgUwuRMLvyGPui3tbMfYmYb95HLCpTqnJUHvi
-----END CERTIFICATE-----
你也可以試試 Startssl 的證書,缺點(diǎn)是在舊電腦,沒有更新的情況下,IE 6是絕對不信任他的,詳見:http://blog.s135.com/startssl/
最后聲明一點(diǎn),受信任的 ssl 證書必須有獨(dú)立IP,或者說,一個(gè)IP只能對應(yīng)一個(gè)域名的證書,愛玩的朋友可以弄一個(gè)玩玩。
相關(guān)文章
centos系統(tǒng)為php安裝memcached擴(kuò)展步驟
這篇文章主要介紹了centos系統(tǒng)為php安裝memcached擴(kuò)展的步驟,大家參考使用吧2014-01-01phpStudy環(huán)境下安裝配置SSL證書實(shí)現(xiàn)加密訪問(Https)
phpStudy環(huán)境下安裝配置SSL證書,本文主要介紹了phpStudy環(huán)境下安裝配置SSL證書實(shí)現(xiàn)加密訪問,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09environments was not found on the java.library.path 問題的解決方法
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path 問題的解決方法,需要的朋友可以參考下2016-08-08apache啟動報(bào) shmget() failed: Invalid argument的解決方法
在apache啟動時(shí)報(bào)錯(cuò):“shmget() failed: Invalid argument”,如何解決呢?這里簡單分享下,方便需要的朋友2013-06-06apache下支持asp.net的實(shí)現(xiàn)方法
讓apache支持asp.net的設(shè)置步驟。2009-12-12Linux系統(tǒng)運(yùn)行級別詳細(xì)介紹
大家好,本篇文章主要講的是Linux系統(tǒng)運(yùn)行級別詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12