PHP开发工程师@温州。博客关于:技术、生活、读书、互联网。

nginx构建Https网站

最近在做一个P2P的借贷网站项目,由于网站涉及到资金的交易安全,要对网站的安全方面做几项升级,Https就是其中一项。


一、什么是 SSL 证书,什么是 HTTPS

SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:

  • 数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听。

  • 用户可以通过服务器证书验证他所访问的网站是否真实可靠

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,即HTTP下加入SSL层。
HTTP默认端口为80,HTTPS默认端口为443。




生成SSL证书

1.首先需要确保服务器上是否安装了openssl。

$ yum install openssl
$ yum install openssl-devel


2.进入需要生成证书的目录。

$ cd /usr/app/nginx/conf


3.生成服务端的私钥(key文件,加密算法des3,key长度1024)。

$ openssl genrsa -des3 -out server.key 1024

这里需要我们输入密码:



4.生成证书。

$ openssl req -new -key server.key -out server.csr

这里需要验证刚才我们的密码及输入省份、城市、域名、email等信息



5.生成公钥。

$ openssl rsa -in server.key -out client.key

这里还需要验证刚才的密码:



6.自己签发证书。

$ openssl x509 -req -days 365 -in server.csr -signkey client.key -out server.crt



至此证书及秘钥生成完毕。


配置nginx支持ssl

server {
    listen 443;
    ssl on;
    ssl_certificate  /usr/app/nginx/conf/server.crt;
    ssl_certificate_key  /usr/app/nginx/conf/client.key;
}

然后重启nginx即可。



测试及总结

现在我们就可以通过https访问我们的网站了。


但我们的证书还不受浏览器的信任,因此每次访问都会出现如下提示:



解决方法有2种:

  1. 手动导入我们的证书。如chrome浏览器,设置-高级设置-管理证书-导入证书。

  2. 购买受浏览器信任的证书,需要到证书授证中心既CA机构申请,如VeriSign。


我们的证书受浏览器信任后即可正常访问了。








评论

© 袁克强的博客 | Powered by LOFTER