1.安装自签证书
自签证书也就是不被公网认可的证书,可在局域网内进行签名认证,其12306也是自签证书,通过证书+nginx代理web服务器 可以实现https连接
一.使用OpenSSL创建证书
建立服务器私钥
openssl genrsa -des3 -out server.key
Generating RSA private key, 1024 bit long modulus
..................++++++
.............++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
140713263834776:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:823:You must type in 4 to 1023 characters
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
必须输入密码,并要这次验证密码
二.生成一个证书请求csr文件
需要依次输入服务器秘钥,国家,地区,组织,email
openssl req -new -key server.key -out server.csr
生成的csr文件交给CA签名后形成服务端自己的证书, 在此说明,common name选项尽量使用域名
三.去除key文件口令的命令
openssl rsa -in server.key -out server.key
四.使用上面的密钥和CSR对证书进行签名
openssl x509 -req -days -sha256 -in server.csr -signkey server.key -out servernew.crt
五.Nginx配置ssl
server {
listen ssl;
server_name myssl.com;
index index.html index.htm index.php;
root /home/wwwroot/myssl;
autoindex on;
include enable-php.conf;
access_log /home/wwwlogs/access.log;
ssl on;
ssl_certificate ssl/servernew002.crt;
ssl_certificate_key ssl/server002.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1. TLSv1.;
}
# http重定向https
server {
listen ;
server_name myssl.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
参考:
http://blog.csdn.net/ldx891113/article/details/50456273
http://blog.csdn.net/cangzihu/article/details/53488996
2.安装Let's Encrypt免费SSL证书
Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。
到目前为止,Let's Encrypt获得IdenTrust交叉签名,这就是说可以应用且支持包括FireFox、Chrome在内的主流浏览器的兼容和支持。
1.获取letsencrypt git文件 ,并执行生成证书
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --standalone --email service@myssl.com -d myssl.com -d myssl.com
在执行letsencrypt时会会安装pythonDev环境(第一次),agree and yes
生成的证书目录在"/etc/letsencrypt/live"下
进入子目录有4个文件
cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件
2.配置Nginx
server
{
listen ssl;
server_name myssl.com;
index index.html index.htm index.php;
root /home/wwwroot/myssl; #error_page /.html;
include enable-php.conf;
if (!-e $request_filename){
rewrite ^/(.*) /index.php?r=$ last;
}
autoindex on;
ssl on;
ssl_certificate /etc/letsencrypt/live/myssl.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myssl.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1. TLSv1.;
access_log /home/wwwlogs/access.log access;
} # http重定向https
server {
listen ;
server_name myssl.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
3.自动续期
Let's Encrypt申请的证书会有三个月的有效期
手动:
./letsencrypt-auto certonly --standalone --email service@myssl.com -d myssl.com -d myssl.com
用crontab进行定时执行续期脚本
参考: http://www.open-open.com/lib/view/open1456025126839.html
根域名跳转www域名
if ($host = 'aaa.com') {
rewrite ^/(.*)$ https://www.aaa.com/$1 permanent;
}