Linux下使用acme.sh 配置https 免费证书
acme.sh 简单来说acme.sh 实现了 acme 协议,可以从 let‘s encrypt 生成免费的证书。 ? 本文记录了我在把网站从HTTP升级到 HTTPS ,申请和安装SSL证书路上踩过的几个坑。 安装环境: 1.安装acme.sh curl https://get.acme.sh | sh
2.安装后的配置 alias acme.sh=~/.acme.sh/acme.sh
echo ‘alias acme.sh=~/.acme.sh/acme.sh‘ >>/etc/profile
安装过程中会自动为你创建 cronjob,每天 0:00 点自动检测所有的证书,如果快过期了,需要更新,则会自动更新证书(可执行crontab -l 查看)。 00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs
3.申请证书 HTTP 方式方法如下: acme.sh --issue -d chandao.test.com --webroot /data/wwwroot/chandao
只需要指定域名,并指定域名所在的网站根目录【命令中/data/wwwroot/chandao为根目录路径】. acme.sh 会全自动的生成验证文件,并放到网站的根目录,然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用. 4.证书的安装 正确的使用方法是使用 --installcert 命令,并指定目标位置,然后证书文件会被copy到相应的位置,例如: acme.sh --installcert -d chandao.test.com --key-file /usr/local/nginx/ssl_cert/test.com/chandao.test.com.key --fullchain-file /usr/local/nginx/ssl_cert/test.com/chandao.test.com.cer --reloadcmd "service nginx force-reload"
附带完成前面1-4步骤的截图: 5. Nginx/Tengine服务器安装SSL证书 Nginx 配置Http和Https共存 listen 80; #如果硬性要求全部走https协议,这一行去除 listen 443 ssl; #如果硬性要求全部走https协议,这里去除ssl server_name chandao.test.com; #ssl on; #如果硬性要求全部走https协议,这里开启ssl on ssl_certificate /usr/local/nginx/ssl_cert/test.com/chandao.test.com.cer; ssl_certificate_key /usr/local/nginx/ssl_cert/test.com/chandao.test.com.key; #ssl性能调优 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on;
完整例子: server { listen 80; #如果硬性要求全部走https协议,这一行去除 listen 443 ssl; #如果硬性要求全部走https协议,这里去除ssl server_name chandao.test.com; access_log off; index index.html index.htm index.php; root /data/wwwroot/chandao; #ssl on; #如果硬性要求全部走https协议,这里开启ssl on ssl_certificate /usr/local/nginx/ssl_cert/test.com/chandao.test.com.cer; ssl_certificate_key /usr/local/nginx/ssl_cert/test.com/chandao.test.com.key; #ssl性能调优 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; #error_page 404 /404.html; #error_page 502 /502.html; location ~ [^/].php(/|$) { #fastcgi_pass remote_php_ip:9000; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; } location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { expires 30d; access_log off; } location ~ .*.(js|css)?$ { expires 7d; access_log off; } location ~ /.ht { deny all; } }
6.重启nginx nginx -t service nginx force-reload
7. 更新 acme.sh 升级 acme.sh 到最新版 : acme.sh --upgrade
如果你不想手动升级,可以开启自动升级: acme.sh --upgrade --auto-upgrade
之后,acme.sh 就会自动保持更新了. 你也可以随时关闭自动更新: acme.sh --upgrade --auto-upgrade 0
6. 出错怎么办: acme.sh --issue ..... --debug
或者: acme.sh --issue ..... --debug 2
8.注意事项: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |