简单快捷给全站加把锁:Nginx添加SSl认证
https 是 http over ssl(Secure Socket Layer),简单讲就是 http 的安全版本,在 http 的基础上通过传输加密和身份认证保证了传输过程中的安全性。你通常访问的网站大部分都是 http 的,最简单的方法可以看看网址是以 http:// 开头还是https:// 开头;
最近看到大家的博客都上了SSL,心里着急啊,于是买阿里云,备案。。。只为了加把锁乐一下;
以下记录大致过程:
创建证书==>认证域名(根据提示上传文件到服务器认证)==>域名认证通过后====>下载证书[上传到服务器]
ssl证书的获取:
网站:https://www.sslforfree.com/
到网上注册一个帐号,根据提示获取一个证书文件,然后安装到自己电脑里;重新打开浏览器时,再打开网页即可登陆认证;才可以做接下来的操作;
1、输入自己的域名,点击右边的按钮,生成证书;
2、选择手动上传文件验证,当然你也可以选择左边的自动上传,需要验证你的FTP帐号密码;
3、这里出现了两个文件,和两个域名,一个不带www的,默认情况下它会生成两个,最好把两个域名都指向到服务器;这里只需要上传其中一个文件即可。同时需要注意,这里要路径问题,要在服务器网站根目录下创建目录:.well-known/acme-challenge/ 把文件上传到此目录下,点击验证即可;当然也可以自己制作一个CSR密钥;这里我直接使用网站生成的;验证通过后可以把上面的目录删除;
接下来是Nginx的配置:
虚拟主机配置:
server {
listen 80;
server_name www.58jb.com;
return 301 https://$server_name$request_uri;
}
server {
# SSL Configuration
listen 443 ssl default_server;
ssl on;
ssl_certificate /etc/nginx/ssl/cert_chain.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
access_log /var/log/nginx/58jb.com.access.log;
error_log /var/log/nginx/58jb.com.error.log;
location / {
root /usr/html;
index index.html index.htm index.php;
}
}
保存配置文件,注意上面的证书和密钥的路径;
mkdir -p /etc/nginx/ssl #创建相应的目录,并把刚才验证后下载回来的证书上传到此;
解压文件:sslforfree .zip
unzip sslforfree.zip
解压后有三个文件:
ca_bundle.crt #根证书文件
certificate.crt #客户端认证的证书
private.key #私钥文件
cert_chain.crt #此文件是由根证书和客户端证书合并而来;客户端证书在前,根证书在后;
确保文件名,路径正确后,验证Nginx配置:nginx -t
最后要重启一下Nginx服务,不然无法生效;