1. 介绍
2. 安装
我们使用acme.sh来申请和管理证书,它很简单用,还能够利用crontab自动更新证书,而且是默认就有的功能。
首先安装。
安装完之后,可以退出登录,再重新登录,或者执行一下。
之后就可以使用acme.sh
命令了。
3. 申请证书
首先申请和下载证书。
$ acme.sh --issue -d boat.rails365.net -w /home/hfpp2012/boat_manager/current/public
这样申请成功之后,证书也会被保存下来,比如保存在下面这个位置:
你可以进去看看的,接下来我们要把证书安装到你的应用中。
$ acme.sh --installcert -d boat.rails365.net \
--keypath /home/hfpp2012/boat_manager/ssl/boat.rails365.net.key \
--fullchainpath /home/hfpp2012/boat_manager/ssl/boat.rails365.net.key.pem \
--reloadcmd "sudo nginx -s reload"
值得注意的是:
会复制一些文件到
--keypath
和--fullchainpath
参数所指定的地方,所以要保证目录是通的,是可写的,一般放到网站根目录相关的地方,如果你的/home/hfpp2012/boat_manager
目录,没有ssl
这个目录,要先新建一个。证书更新之后,会让nginx也更新的,因为这些证书是要由nginx使用的,所以要更新,那
acme.sh
会自动去触发那个更新的命令,所以你得告诉acme.sh
如何去更新nginx的配置。所以这也是--reloadcmd
发挥的作用,里面的值,得根据你的系统而定,只要能更新到nginx的配置就好了。
接下来,还需要再生成一个文件,具体我也不知道有什么用,很多ssl的配置都需要它。
4. nginx配置
最后,把上面所有生成的文件跟nginx结合起来,再把配置写到nginx的配置文件中。
比如,我是这样的:
upstream boat_manager {
server unix:///home/hfpp2012/boat_manager/shared/tmp/sockets/puma.sock fail_timeout=0;
server {
listen 443 ssl;
ssl_certificate /home/hfpp2012/boat_manager/ssl/boat.rails365.net.key.pem;
ssl_certificate_key /home/hfpp2012/boat_manager/ssl/boat.rails365.net.key;
# ssl_dhparam
ssl_dhparam /home/hfpp2012/boat_manager/ssl/dhparam.pem;
root /home/hfpp2012/boat_manager/current/public;
keepalive_timeout 70;
location ~ ^/assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @boat_manager;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://boat_manager;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection "upgrade";
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name boat.rails365.net;
}
顶层的http指令那里,也需要加上这两行:
最后,你把nginx重启一下,再试试效果。