写在前面

个人网站运行将近2个月了,期间根据酷壳的一篇教程如何免费的让网站启用HTTPS做了一次,中间遇到问题就放下了。昨天孙三苗问我网站地址说要添加友链,出于好奇想看他网站长什么样,顺道也加一下友链。访问后发现他网站已经启用https了,于是按捺不住内心的冲动。以下是采用Let’s Encrypt免费方案,以及过程中遇到的问题和解决办法。

环境

阿里云服务器 ECS

centos 7

nginx

操作步骤

访问 https://certbot.eff.org 选择相应的SoftWare和System。(比如我的Nginx和Centos/Rhel7)

按页面所示步骤执行:

1)安装Certbot

$ yum -y install yum-utils
$ yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

$ sudo yum install certbot python2-certbot-nginx

2)获取证书

$ sudo certbot --nginx certonly

执行到这一步出问题了,问题大致是 /etc/nginx 下找不到相应文件夹,certbot 获取证书的同时会修改nginx的配置文件,找不到该文件所以才会报错。因为我的Nginx并没有安装在/etc目录下,而是在/usr/bin/nginx。各人情况可能不太一样,可以通过命令查看你的nginx目录(我的nginx配置文件在/usr/local/nginx/conf/下名为nginx.conf):

$ which nginx

解决办法:(这两行命令大致就是使目录之间建立软连接,进行同步)

$ ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
$ ln -s /usr/local/nginx/conf/ /etc/nginx

然后,继续执行获取证书时出问题的命令:

$ sudo certbot --nginx certonly

按提示回车就行了~

3)查看nginx配置文件信息 (/usr/local/nginx/conf/nginx.conf)

  1 user  www www;
  2
  3 worker_processes auto;
  4
  5 error_log  /home/wwwlogs/nginx_error.log  crit;
  6
  7 pid        /usr/local/nginx/logs/nginx.pid;
  8
  9 #Specifies the value for maximum file descriptors that can be opened by this process.
 10 worker_rlimit_nofile 51200;
 11
 12 events
 13     {
 14         use epoll;
 15         worker_connections 51200;
 16         multi_accept on;
 17     }
 18
 19 http
 20     {
 21         include       mime.types;
 22         default_type  application/octet-stream;
 23
 24         server_names_hash_bucket_size 128;
 25         client_header_buffer_size 32k;
 26         large_client_header_buffers 4 32k;
 27         client_max_body_size 100m;
 28
 29         sendfile   on;
 30         tcp_nopush on;
 31
 32         keepalive_timeout 60;
 33
 34         tcp_nodelay on;
 35
 36         fastcgi_connect_timeout 300;
 37         fastcgi_send_timeout 300;
 38         fastcgi_read_timeout 300;
 39         fastcgi_buffer_size 64k;
 40         fastcgi_buffers 4 64k;
 41         fastcgi_busy_buffers_size 128k;
 42         fastcgi_temp_file_write_size 256k;
 43
 44         gzip on;
 45         gzip_min_length  1k;
 46         gzip_buffers     4 16k;
 47         gzip_http_version 1.1;
 48         gzip_comp_level 2;
 49         gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
 50         gzip_vary on;
 51         gzip_proxied   expired no-cache no-store private auth;
 52         gzip_disable   "MSIE [1-6]\.";
 53
 54         #limit_conn_zone $binary_remote_addr zone=perip:10m;
 55         ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
 56
 57         server_tokens off;
 58         access_log off;
 59
 60 server
 61     {
 62         #listen [::]:80 default_server ipv6only=on;
 63         server_name www.liangyadong.com liangyadong.com;
 64         index index.html index.htm index.php;
 65         root  /home/wwwroot/default;
 66
 67         if (-f $request_filename/index.html){
 68             rewrite (.*) $1/index.html break;
 69         }
 70
 71         if (-f $request_filename/index.php){
 72             rewrite (.*) $1/index.php;
 73         }
 74
 75         if (!-f $request_filename){
 76             rewrite (.*) /index.php;
 77         }
 78
 79         #error_page   404   /404.html;
 80
 81         # Deny access to PHP files in specific directory
 82         #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
 83
 84         include enable-php.conf;
 85
 86         location /nginx_status
 87         {
 88             stub_status on;
 89             access_log   off;
 90         }
 91
 92         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
 93         {
 94             expires      30d;
 95         }
 96
 97         location ~ .*\.(js|css)?$
 98         {
 99             expires      12h;
100         }
101
102         location ~ /.well-known {
103             allow all;
104         }
105
106         location ~ /\.
107         {
108             deny all;
109         }
110
111         access_log  /home/wwwlogs/access.log;
112
113     listen 443 ssl http2; # managed by Certbot
114     ssl_certificate /etc/letsencrypt/live/liangyadong.com/fullchain.pem; # managed by Certbot
115     ssl_certificate_key /etc/letsencrypt/live/liangyadong.com/privkey.pem; # managed by Certbot
116     include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
117     ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
118
119 }
120 include vhost/*.conf;
121
122
123 server
124     {
125     if ($host = www.liangyadong.com) {
126         return 301 https://$host$request_uri;
127     } # managed by Certbot
128
129
130     if ($host = liangyadong.com) {
131         return 301 https://$host$request_uri;
132     } # managed by Certbot
133
134
135         listen 80 default_server;
136         server_name www.liangyadong.com liangyadong.com;
137     return 404; # managed by Certbot
138
139 }}

其中,113~139中加了# managed by Certbot注释的就是自动添加的内容。

4)通过步骤3)可以发现需要用到443端口,所以要在防火墙配置文件中进行配置443端口(/etc/sysconfig/iptables)。

5)重启nginx服务,重启防火墙设置。

$ service nginx restart 
$ service iptables restart

于是满怀信心的打开自己的网站发现并不能访问!

6)之所以到这里还不行,是因为阿里云服务器有一个安全组规则管理。

然后添加安全组规则,将443端口添加进来就哦了~

7)验证端口是否已成功开启(在线检测工具http://coolaf.com/tool/port)

8)访问网站验证。

9)明明是https了,为什么不是安全锁而是感叹号呢?

原因在于:网站页面上面引用了不是https的资源,最常见的就是引用的图片、logo点击事件设置的超链接等地方,友链不一定有影响(可以设置试试,我这里友链没有影响)。

解决办法:貌似没什么快捷的方法,反正我是把硬编码的地方把http改成了https,其中最多的就是图片引用链接,因为文章本身不多,而且引用的图片之前是通过后台管理上传到服务器的,现在已全部修改为从微薄图床引用,引用路径都是https。(方法比较笨,有其他解决方案可以留言,拯救一下我这坨菜鸡)

补充:如果用的是wordpress建站记得修改常规选项中的站点地址。(设置>常规)

启用https后效果图如下:

友链没有影响,主要影响是logo的超链接,以及网站首页超链接。

10)添加定时任务(用于更新证书)

执行命令添加定时任务(修改命令相同)

$ crontab -e

添加内容:

0 0 1 * * /usr/bin/certbot renew --force-renewal        #每月1号凌晨强制更新Let's Encrypt证书
5 0 1 * * /usr/sbin/service nginx restart               #每月1号凌晨更新证书后重启nginx

保存,设置crond服务为开机自启动。(此时其实已经是自启动的了,难道说默认就是?)

查看、设置自启动可查看该篇centos7设置服务为开机自启动(以crond.serivce为)

另外,从centos7开始命令貌似已经变了。

任务 旧指令 新指令
使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务 chkconfig --list systemctl list-units --type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

感谢:

  • 使用免费SSL证书让网站支持HTTPS访问

  • 如何免费的让网站启用HTTPS

  • 网站https前安全锁有感叹号的解决方法

  • centos7设置服务为开机自启动(以crond.serivce为例)

  • crontab 实战详解 centos6.3

  • linux 设置开机启动服务程序

转载于:https://www.cnblogs.com/yadongliang/p/10723051.html

记一次免费让网站启用HTTPS的过程相关推荐

  1. 如何免费的让网站启用HTTPS

    今天,我把CoolShell变成https的安全访问了.我承认这件事有点晚了,因为之前的HTTP的问题也有网友告诉我,被国内的电信运营商在访问我的网站时加入了一些弹窗广告.另外,HTTP的网站在搜索引 ...

  2. 在腾迅云申请免费型DV版SSL证书让自己的网站启用https

    现在很多浏览器都会给网站定义不安全网站,可是我是好人啊,还是申请个好人卡证明我是好人吧. 我们找到腾迅云的ssl证书购买页面,选择免费型DV版SSL证书. 填写域名和邮箱即可以 然后是验证你的域名所有 ...

  3. acme证书安装,免费给网站配置https证书

    1.下载脚本 curl https://get.acme.sh | sh 2.配置环境变量 alias acme.sh=~/.acme.sh/acme.sh 3.使用dns api方式申请 需要登陆 ...

  4. 我是如何将网站全站启用Https的?-记录博客安装配置SSL证书全过程

    评论»   文章目录 为什么要Https 如何选择Https 安装部署SSL证书 平滑过渡Https 搜索引擎的响应 启用Https小结 正如大家所看到的,部落全站已经启用了Https访问了,连续几天 ...

  5. 网站开启HTTPS,免费的 SSL证书 申请渠道有哪些?

    HTTPS已经是大势所趋,搜索引擎已经明确表示采用HTTPS协议的页面更加安全,排名上会优先对待,所以网站HTTPS还是很有必要的!网站启用HTTPS,分享几个免费SSL证书申请渠道. 添加描述 1. ...

  6. epub 免费转换网站

    epub 在线阅读网站: https://www.neat-reader.cn/webapp#/ 推荐 epub 转换软件:Neat Converter 推荐理由:转换效果不错,而且转换成功后,下载特 ...

  7. 网站如何启用https

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入 ...

  8. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器启用https服务申请免费证书...

    背景分析 目前想在 web 上使用 HTTPS 的话, 你需要获得一个证书文件, 该证书由一个受浏览器信任的公司所签署. 一旦你获得了它, 你就在你的 web 服务器上指定其所在的位置, 以及与你关联 ...

  9. 免费SSL证书大全,加速普及网站实现HTTPS加密

    免费SSL证书大全,加速普及网站实现HTTPS加密 SSL 证书用于加密 HTTP 协议,实现网站通过HTTPS加密协议访问.随着国内外各大网站实现全站 HTTPS 协议,以及搜索引擎对使用 HTTP ...

最新文章

  1. IPv6 — 网际协议第 6 版
  2. flock lock ex php,php – flock有可能用LOCK_EX返回false吗?
  3. Hudson 之旅(二)
  4. HP/Aruba 2620系列交换机DHCP中继配置方法
  5. windows,linux桌面系统管理
  6. 【教程】Edraw Max(亿图图示):使用免费模板和示例快速制作发票
  7. 使用vcpkg安装numcpp与opencv4[contrib,world]
  8. 基于PLC和组态软件的多方式运行小车控制系统设计
  9. Android查看应用签名方法
  10. .NET报表控件ActiveReports 教程:应用系统中如何完成各种报表系统的需求
  11. airtest web 录制滑块_AirTest学习四,录制Web测试脚本
  12. 国内优秀开源镜像站汇总
  13. Edge,IE浏览器 兼容模式设置
  14. 2016年腾讯校招笔试题 详解
  15. 老大一个接口加解密临时任务丢了过来,我却肝了3天,感觉可以收拾工位了
  16. 设置密码隐密文件工具 v1.4
  17. openlayers地图实现地点标注
  18. Welcome to Pete Brown's 10rem.net
  19. 【调剂】中国航天系统科学与工程研究院2023年硕士研究生招生调剂开始啦!
  20. 关于redis的主从、哨兵、集群

热门文章

  1. 《算法导论》读书笔记之第9章 中位数和顺序统计学
  2. 2012年十大项目月度得分榜
  3. Varnish Glossary(varnish术语)
  4. Linux概述及centos版本介绍和下载地址
  5. 安装运行symfony框架编写的edusoho开源程序
  6. Java学习之路-RMI学习
  7. apache-commons pool使用
  8. C#水晶报表,窗体不显示,闪退
  9. 自定义控件实现(转)
  10. c语言 -1%4,**************