`
jrails
  • 浏览: 100939 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Nginx 配置 SSL 证书 + HTTPS 站点小记

阅读更多

Nginx 配置 SSL 证书 + HTTPS 站点小记

今天给几个站点配置了认证的 ssl 证书,但是苦于自己技术不过关,或是知识不足,导致还有那么一小点 Bug 的出现,这里就我配置 HTTPS 站点的经验来总结一下吧。
一、什么是 SSL 证书,什么是 HTTPS 网站?
SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。(来源)
二、什么网站需要 SSL 证书?
就我遇到过的网站,配置了认证的证书的,大概有这么几类:
1、购物交易类网站
这个就不用说了,支付宝、Paypal等肯定会加密以保护你的密码安全。
2、注册类站点
有些大站点,注册会员或者登陆的时候,会专门通过SSL通道,来保护你的密码安全,比如:https://www.name.com/account/login.php
3、在线代理类站点
这个,为了防止天朝某个部分嗅探出没加密的内容,嗯哼,就不说了。
4、耍酷类
比如我……
三、Nginx 下如何配置证书
之前,我介绍过如何购买并且配置 Godaddy 的证书:《Godaddy SSL证书以及 Nginx 配置HTTPS方法》,后来因为一个小失误,每次修改 Nginx 配置,重启 Nginx 的时候都会输入密码,所以之后买了 Comodo 的证书,并且让 @Paveo 帮我全部配置好,哈哈。
但是总请别人来配置总不太好意思,所以我得自己研究一下,然后,就当作记录和总结吧。
1、Nginx 配置 ssl 模块
默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块方法如下:
下载 Nginx 0.7.64 版本,解压 进入解压目录:
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自己修改
编译
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
如果有 IPV6 模块,加上 --with-ipv6 参数:
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6
(来源:http://www.hostloc.com/thread-4871-1-1.html)
因为是小网站,用不着平滑升级,直接 killall nginx 杀掉 nginx 进程,然后 /usr/local/nginx/sbin/nginx 启动 nginx 即可
OK,升级并且安装好 ssl 模块完毕,这里我把 Nginx 修改成了 zoulu,于是乎:

怎么样,很有个性吧!
2、使用 OpenSSL 生成证书
①、生成RSA密钥的方法
openssl genrsa -out privkey.pem 2048
有的证书要 1024 的,所以得:
openssl genrsa -out privkey.pem 1024
②、生成一个证书请求
openssl req -new -key privkey.pem -out cert.csr
会提示输入省份、城市、域名信息等,重要的是,email 一定要是你的域名后缀的,比如 webmaster@zou.lu 并且能接受邮件!
这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 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 提供商即可,一般半个钟头到一天时间就会发给你证书,如图:

把所有文件全部上传到一个特定的目录,比如我是上传到 /root/zoulu/
这里,zoulukey.pem 和 zoulucert.csr 是自己在 VPS 生成的,剩下的都是证书签发机构颁发的。
一般情况下,直接用证书签发机构颁发的 crt 文件即可,比如 zou_lu.crt ,但是有很多证书签发机构默认在 Firefox 中文版下是不会信任的,经过仔细研究,终于发现,原来得把证书签发机构办法给你的 crt 文件也放入才行。
方法如下:
合并 PositiveSSLCA.crt (证书签发机构的 crt) 和 zou_lu.crt (自己域名的 crt)
cat  zou_lu.crt >> PositiveSSLCA.crt
mv PositiveSSLCA.crt  zou_lu.crt
或者直接用记事本打开,然后复制 PositiveSSLCA.crt 里面所有的内容到 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;
其他的配置信息和一般站点的一样,不再重复。
四、访问测试结果
在 Firefox 英文版 / Chrome / Opera / Safari / IE 6、7、8 下均没问题, https://zou.lu/ 在 Firefox 3.5.7 中文版下没问题,遇到问题的童鞋,检查你的系统时间,要是还不信任,那我也不是很清楚了,抱歉能力有限。
五、如何获得免费的证书
https://zou.lu/ 的证书是 PositiveSSL 签发的,这是一家 Comodo 的 Reseller ,目前可以通过如下途径获得:
去 NameCheap.com 注册、转移一个域名或者购买一款空间就能获得,而且是免费一年的哦!
需要注意的是,NameCheap 注册后颁发的证书没有证书签发机构的 PositiveSSLCA.crt ,这里我就放一个,为了大家安装方便:
-----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 的证书,缺点是在旧电脑,没有更新的情况下,IE 6是绝对不信任他的,详见:http://blog.s135.com/startssl/
最后声明一点,受信任的 ssl 证书必须有独立IP,或者说,一个IP只能对应一个域名的证书,爱玩的朋友可以弄一个玩玩。

 

分享到:
评论

相关推荐

    Windows下Nginx配置SSL实现Https访问(包含证书生成)

    ### Windows 下 Nginx 配置 SSL 实现 HTTPS 访问(包含证书生成) #### 一、HTTPS 的重要性 HTTPS(Hyper Text Transfer Protocol Secure),即安全超文本传输协议,是在 HTTP 协议的基础上加入了 SSL/TLS 协议,...

    nginx配置+https

    - **证书配置**: - `ssl_certificate "/etc/pki/nginx/server.pem";` - `ssl_certificate_key "/etc/pki/nginx/private/server.key";` 这两行设置了用于加密连接的证书文件及其对应的私钥文件。 - **监听端口**...

    应用网关Nginx+Https证书+内网穿透+图片切割水印+网关登录

    它一个工具等于Nginx + 网关登录 + 图片处理 + 内网穿透 + 免费Ssl证书,且配置全程界面化,让你告别难懂、难记易出错的指令配置; 在追求功能多样性上性能也无语伦比,拥有多种措施大幅度改善源应用性能,是企业和...

    Vue项目部署Nginx配置文件 SSL

    Vue.js 是一个流行的前端开发框架,用于构建交互式的单页应用程序(SPA)。当你的 Vue 项目完成开发并经过 `npm run build` 编译...同时,定期更新 SSL 证书并关注最新的安全标准和最佳实践是保持站点安全的重要步骤。

    Nginx配置SSL自签名证书的方法

    本文将详细介绍如何在Nginx服务器上配置SSL自签名证书。 首先,我们需要生成自签名SSL证书。这通常包括以下步骤: 1. **生成RSA密钥**:使用`openssl genrsa`命令创建一个带有密码保护的RSA私钥。例如,`openssl ...

    nginx配置 +负载均衡+https协议

    通过生成SSL证书、重新编译Nginx以添加SSL模块,以及编辑Nginx配置文件实现HTTPS支持和负载均衡功能。此外,还提供了Nginx的基本操作命令,包括启动、停止和重启等。这些步骤和配置为构建安全可靠的Web服务器提供了...

    ssl证书(nginx+tomcat+java代码适用)

    ssl自制全套证书(包含服务器端、客户端、ca端的证书,格式有.crt,.key,.truststore,.keystore,.p12,.cer,.pem等类型),当时要配置webservice接口、tomca、nginx通过ssl访问的证书,弄了好久才生成了一套能使用的。...

    nginx+tomcat+ssl_https

    在"nginx+tomcat+ssl_https"组合中,Nginx通常被配置为SSL终止点,即接收客户端的HTTPS请求,解密数据,然后以HTTP的形式转发给Tomcat。这样可以减少Tomcat的负担,因为它不必直接处理加密通信。 在Windows环境下,...

    Nginx配置SSL证书监听443端口

    Nginx配置SSL证书以监听443端口的方法是网络安全和Web服务器管理中的一项重要技能。443端口是HTTP安全套接字层(HTTPS)服务的标准端口,而SSL(安全套接字层)是一种安全协议,用于为互联网通信加密,保障数据传输...

    nginx配置ssl实现https访问的步骤(适合新手)

    总的来说,配置Nginx SSL涉及的主要步骤包括:申请SSL证书、编辑Nginx配置文件、设置SSL相关参数、定义虚拟主机及目录路径,最后重启服务。遵循这些步骤,新手也能顺利实现HTTPS访问,提升网站的安全性。

    配置dotnet+nginx+SSL+centos

    配置dotnet+nginx+SSL+centos

    notepad++编辑nginx配置文件支持高亮

    在标题“notepad++编辑nginx配置文件支持高亮”中,我们关注的是如何在Notepad++中实现对Nginx配置文件的语法高亮显示,这将极大提升开发者的阅读和编写效率。 Nginx是一款高性能的HTTP和反向代理服务器,其配置...

    nginx配置ssl证书实现https访问的示例

    三,申请ca证书 在阿里云控制台-产品与服务-安全(云盾)-CA证书服务(数据安全),点击购买证书, 选择“免费版DV SSL”,点击立即购买: 然后点去支付: 最后确认支付: 就会回到管理界面: 点击“补全”,输入要...

    nginx配置SSL证书实现https服务的方法

    在前面一篇文章中,使用openssl生成了免费证书后,我们现在使用该证书来实现我们本地node服务的https服务需求。假如我现在node基本架构如下: |----项目 | |--- static # 存放html文件 | | |--- index....

    nginx https 配置

    首先,为了配置Nginx以支持HTTPS,你需要获取SSL证书。SSL证书通常由权威的证书颁发机构(CA)签发,如Let's Encrypt、Comodo、Verisign等。对于个人或测试环境,可以免费申请Let's Encrypt的证书。证书包括公钥和...

    nginx配置下载SSL证书之后在服务器中配置之后就可以https访问

    以下将详细介绍如何在Nginx服务器中配置SSL证书,使得网站能够支持HTTPS访问。 首先,你需要从数字证书管理服务提供商(如Let's Encrypt、Comodo、Symantec等)购买并申请SSL证书。申请过程中,你需要提供域名信息...

    阿里云ssl证书配置https和slb的http跳转到https-详细笔记总结

    阿里云 SSL 证书配置 HTTPS 和 SLB 的 HTTP 跳转到 HTTPS ...阿里云 SSL 证书配置 HTTPS 和 SLB 的 HTTP 跳转到 HTTPS 需要考虑多种因素,包括 SSL 证书配置、SLB 的后端协议、Nginx 配置、HTTPS 跳转等。

    教你搭建http php java服务器+ssl证书=https网站,Linux+Nginx-Apache PHP-Tomcat java+SSL证书.zip

    手把手教你搭建https服务器,部署ssl证书到php java服务器(Nginx-Apache PHP-Tomcat java+SSL证书) 1.购买免费的SSL证书 2.下载SSL证书 3.往nginx上新增ssl 4.往Apache上新增ssl 5.往Tomcat上新增ssl 6.解决警告 7....

    Centos7服务器配置Nginx+mysql+https证书

    5. HTTPS证书配置: - HTTPS是HTTP的安全版本,通过SSL/TLS提供加密。在Nginx中配置HTTPS需要有效的SSL证书。 - 证书可以从受信任的证书颁发机构(CA)购买,或者使用Let's Encrypt等免费证书服务。 - Nginx配置...

    阿里云服务器配置nginx+https

    对于启用HTTPS,首先确认Nginx是否已经配置了SSL模块。你可以通过运行Nginx并检查输出来判断: ```bash /usr/local/nginx/sbin/nginx -V ``` 如果未发现`--with-http_ssl_module`,则需要重新编译Nginx,添加SSL...

Global site tag (gtag.js) - Google Analytics