欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

nginx配置ssl证书实现https和http共存访问

来源: 作者: 时间:2019-02-24 21:37 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

由于自己生成的证书不受浏览器信任,所以需要到第三方ssl证书提供商处购买,在购买ssl证书时,需要提供一个自己的web服务器生成的csr密码。
生成csr的步骤:
①:生成RSA密钥:
[plain] view plain copy
$openssl genrsa -out privkey.pem 2048 
注意,有的证书是要 1024 的,所以得:
[plain] view plain copy
openssl genrsa -out privkey.pem 1024  
②:生成csr证书:
[plain] view plain copy
openssl req -new -key privkey.pem -out cert.csr  
会提示输入省份、城市、域名信息等,重要的是,email 一定要是你的域名后缀的,比如 webmaster@zou.lu 并且能接受邮件,因为ssl证书提供商会发送验证邮件和证书文件压缩包到这个邮箱。
这样就有一个 csr 文件了,直接vi ./cert.csr 查看证书的内容,是一串字符串,如下:
[plain] view plain copy
-----BEGIN CERTIFICATE REQUEST-----  
MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAkhCMQwwCgYDVQQH  
EwNTSloxDzANBgNVBAoTBkZhbmZvdTESMBAGA1UEAxMJZzFuZm91LmRlMSIwIAYJ  
KoZIhvcNAQkBFhN3ZWJtYXN0ZXJAZmFuZm91LmRlMIGfMA0GCSqGSIb3DQEBAQUA  
A4GNADCBiQKBgQC5l4PmZg6TCIpduefxq5gsLXN1JeQdBmUs+pEApeHmNoxE+R4k  
VkQUJzLj5o3ltQGJzYrcIfru8NryQSxaT/5IjeFwS7nIMsx8KPkQQ71BJazsiZj+  
CdLDRJj1m/SrjTsNrfYj4rFFS1FXq7uEDyreUx7fyAljx70jPSsGBOGwRQIDAQAB  
oAAwDQYJKoZIhvcNAQEFBQADgYEACKCBQcnCq5yE3GFyN3NyxCQEvnspkIv9AqI4  
FcwqyHPZWkupp3wfubHY80IwtfjlGlTSynzE7FZLVpcbNfKLnAYlYEwDY7NukJNy  
pCbyqpJJXdAl3Jcun0NlLtSxTQpR+abO8va/BAO5Hp9h1rpSRtTdSJd2fC/owRV1  
BfRuJnA=  
-----END CERTIFICATE REQUEST-----  
直接复制上面的字符串提交给ssl证书提供商,提供商处理后会发送ssl相关证书到webmaster@zou.lu邮箱,如下:

把所有文件全部上传到一个特定的目录,比如我是上传到 /usr/local/nginx/conf。
这里,zoulukey.pem 和 zoulucert.csr 是自己原来在web服务器生成的,剩下的都是证书签发机构颁发的。
一般情况下,直接用证书签发机构颁发的 crt 文件即可,比如 zou_lu.crt ,但是有很多证书签发机构默认在 Firefox 中文版下是不会信任的,经过仔细研究,终于发现,原来得把证书签发机构给你的 crt 文件也放入才行,这时需要合并 PositiveSSLCA.crt (证书签发机构的 crt)和zou_lu.crt (自己域名的 crt),方法如下:
[plain] view plain copy
    cat zou_lu.crt >> PositiveSSLCA.crt  
    mv PositiveSSLCA.crt zou_lu.crt  
或者直接用记事本打开,然后复制 PositiveSSLCA.crt 里面所有的内容到 zou_lu.crt 最下方即可。
上传证书完成后,需要修改nginx的配置,因为并不需要整站https访问,所以需要http和https访问共存,如下:
[plain] view plain copy
server { 
            listen 80; 
            listen 443 ssl; 
            server_name zou.lu; 
            root /var/www/html; 
             
            #ssl on;   //这行必须要注释掉 
            ssl_certificate /usr/local/nginx/conf/zou_lu.crt; 
            ssl_certificate_key /usr/local/nginx/conf/zoulukey.pem; 
        } 
配置完成,现在试着用http和https访问同一个链接,应该都可以访问了。
 

由于自己生成的证书不受浏览器信任,所以需要到第三方ssl证书提供商处购买,在购买ssl证书时,需要提供一个自己的web服务器生成的csr密码。
生成csr的步骤:
①:生成RSA密钥:
[plain] view plain copy
$openssl genrsa -out privkey.pem 2048 
注意,有的证书是要 1024 的,所以得:
[plain] view plain copy
openssl genrsa -out privkey.pem 1024  
②:生成csr证书:
[plain] view plain copy
openssl req -new -key privkey.pem -out cert.csr  
会提示输入省份、城市、域名信息等,重要的是,email 一定要是你的域名后缀的,比如 webmaster@zou.lu 并且能接受邮件,因为ssl证书提供商会发送验证邮件和证书文件压缩包到这个邮箱。
这样就有一个 csr 文件了,直接vi ./cert.csr 查看证书的内容,是一串字符串,如下:
[plain] view plain copy
-----BEGIN CERTIFICATE REQUEST-----   copyright 无奈人生
MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAkhCMQwwCgYDVQQH  
EwNTSloxDzANBgNVBAoTBkZhbmZvdTESMBAGA1UEAxMJZzFuZm91LmRlMSIwIAYJ  
KoZIhvcNAQkBFhN3ZWJtYXN0ZXJAZmFuZm91LmRlMIGfMA0GCSqGSIb3DQEBAQUA  
A4GNADCBiQKBgQC5l4PmZg6TCIpduefxq5gsLXN1JeQdBmUs+pEApeHmNoxE+R4k  
VkQUJzLj5o3ltQGJzYrcIfru8NryQSxaT/5IjeFwS7nIMsx8KPkQQ71BJazsiZj+  
CdLDRJj1m/SrjTsNrfYj4rFFS1FXq7uEDyreUx7fyAljx70jPSsGBOGwRQIDAQAB  
oAAwDQYJKoZIhvcNAQEFBQADgYEACKCBQcnCq5yE3GFyN3NyxCQEvnspkIv9AqI4  
FcwqyHPZWkupp3wfubHY80IwtfjlGlTSynzE7FZLVpcbNfKLnAYlYEwDY7NukJNy  
pCbyqpJJXdAl3Jcun0NlLtSxTQpR+abO8va/BAO5Hp9h1rpSRtTdSJd2fC/owRV1  
BfRuJnA=  
-----END CERTIFICATE REQUEST-----  
直接复制上面的字符串提交给ssl证书提供商,提供商处理后会发送ssl相关证书到webmaster@zou.lu邮箱,如下:

copyright 无奈人生

把所有文件全部上传到一个特定的目录,比如我是上传到 /usr/local/nginx/conf。
这里,zoulukey.pem 和 zoulucert.csr 是自己原来在web服务器生成的,剩下的都是证书签发机构颁发的。
一般情况下,直接用证书签发机构颁发的 crt 文件即可,比如 zou_lu.crt ,但是有很多证书签发机构默认在 Firefox 中文版下是不会信任的,经过仔细研究,终于发现,原来得把证书签发机构给你的 crt 文件也放入才行,这时需要合并 PositiveSSLCA.crt (证书签发机构的 crt)和zou_lu.crt (自己域名的 crt),方法如下:
[plain] view plain copy
    cat zou_lu.crt >> PositiveSSLCA.crt  
    mv PositiveSSLCA.crt zou_lu.crt  
或者直接用记事本打开,然后复制 PositiveSSLCA.crt 里面所有的内容到 zou_lu.crt 最下方即可。
上传证书完成后,需要修改nginx的配置,因为并不需要整站https访问,所以需要http和https访问共存,如下:
[plain] view plain copy
server { 

无奈人生安全网


            listen 80; 
            listen 443 ssl; 
            server_name zou.lu; 
            root /var/www/html; 
             
            #ssl on;   //这行必须要注释掉 
            ssl_certificate /usr/local/nginx/conf/zou_lu.crt; 
            ssl_certificate_key /usr/local/nginx/conf/zoulukey.pem; 
        } 
配置完成,现在试着用http和https访问同一个链接,应该都可以访问了。
  无奈人生安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。