我用到的证书是Let's Encrypt,这是一个免费、开放,自动化的证书颁发机构,由 ISRG(Internet Security Research Group)运作。ISRG 是一个关注网络安全的公益组织,详情参见官网 https://letsencrypt.org/
环境
我用的环境如下
Ubuntu 16.04.1
Nginx
Tomcat 7.0
证书主是通过Nginx配置的,Nginx再负责将请求转发给tomcat
获取证书
从github下载脚本
$ git clone https://github.com/letsencrypt/letsencrypt
然后进到目录,使用letsencrypt-auto脚本查看帮助信息,帮助信息比较长就不列出来了。
$ cd letsencrypt
$ ./letsencrypt-auto --help
获取nginx证书
$ ./letsencrypt-auto certonly --nginx --email 1094175128@qq.com -d blog.wongyotwei.cn
certonly表示只获取证书,不安装,--nginx表示使用Nginx的插件来认证证书,--email是自己的邮箱,-d表示绑定的域名
回车之后会有几次确认提示,成功创建的话会提示"Congratulations! Your certificate and chain..."这样的信息,证书会被放在
/etc/letsencrypt/live/{你绑定的域名}/这个目录下,有几个文件
cert.pem
chain.pem
fullchain.pem
privkey.pem
Nginx配置
server {
listen 443 ssl;
server_name blog.wongyotwei.cn; #我要绑定的域名
ssl_certificate /etc/letsencrypt/live/blog.wongyotwei.cn/fullchain.pem; #证书的位置
ssl_certificate_key /etc/letsencrypt/live/blog.wongyotwei.cn/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080/yotwei_blog/; # 我这里是把请求转发给tomcat
proxy_cookie_path /yotwei_blog /; #这是让cookie生效的
#可以先测试一下下面两行的配置能否生效再来修改location的映射
#default_type application/json;
#return 200 '{"status":"success","result":"nginx json"}';
}
}
最后nginx -t 没问题了再reload,用https访问以下自己配置的域名,这样就代表配置成功了
HTTP强制跳转到HTTPS
这个也很好办,重写一下URL
server {
listen 80;
server_name blog.wongyotwei.cn;
rewrite ^(.*) https://$server_name$1 permanent;
}