nginx网站ssl实现https加密访问
现在很多站点都实现了https,有追加支持的,也有单独支持https的,很多站长博客都支持了,更别说一些大站了,而且ios app上都硬性要求用https,苹果App于2017年1月1日将启用App Transport Security安全功能,即强制App通过HTTPS连接网络服务。
我想这是一个趋势,很多网站都陆陆续续支持了https,有很多网友表示:
一把绿锁好看
逼格高
心理感觉好。尤其是用 chrome 时
防止被劫持加入广告
下面学习下如何在linux的nginx环境下让我们的php站点支持https,使用ssl模块配置同时支持http和https并存,后续把本站也支持上https。
一、生成证书
#先定位到存放证书的目录,创建证书和私钥的目录,我放在nginx的conf目录下
cd /usr/local/nginx/conf
#1 创建服务器私钥:
openssl genrsa -des3 -out server.key 1024
#2 创建签名请求的证书(CSR):
openssl req -new -key server.key -out server.csr
#3 在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
#4 最后标记证书使用上述私钥和CSR:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
#以上过程中会要求输入密码,City,Orgination,Name,Email等信息,
这些信息会在证书信息中显示,如下面的截图。
二、配置nginx
修改域名绑定的nginx.conf,也可能是别的文件(如果自定义了额外的站点配置文件)。
server
{
listen 443 ;
#listen [::]:81 default_server ipv6only=on;
server_name _;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
ssl_session_timeout 5m;
index index.html index.htm index.php;
root /home/wwwroot/default;
...
}
加入server一节,配置端口和ssl密钥
三、检查配置并重启
#检查下是否配置正确
/usr/local/nginx/sbin/nginx -t
#配置正确显示下面
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#然后重启nginx
service nginx reload
输入网址访问下看看效果
这样就可以访问了,只不过证书是没有认证的,这个问题后续再研究。。。
【环境版本】
debian linux
php