我们都知道http协议是超文本传输协议,早期的网站使用的都是http,但是并不安全,数据在传输过程中容易被拦截篡改。所以后面有了https,也就是经过ssl加密的http协议。本文主要对网站配置https做一个总结,对https的概念不做具体介绍,想了解的可以参考百度百科或者维基百科中的介绍。

获得 SSL 安全证书

要想配置https,首先要获取ssl证书。常见的有 Godaddy 、 GlobalSign等收费机构签发的证书,当然也有 ISRG ( Internet Security Research Group )推出的免费证书Let’s Encrypt,不过要每三个月更新一次。当前网站用的就是Let’s Encrypt免费证书。

采用Let’s Encrypt证书配置https,最简单的办法就是Certbot,但是由于腾讯云的域名解析服务器有防火墙限制,导致执行./certbot-auto certonly命令的时候,一直没办法解析域名。

无奈只好采用其它办法。腾讯云其实自己有封装一套获取Let’s Encrypt证书的方法。

具体详见:腾讯云DNSPod API申请Let’s Encrypt泛域名证书

按照步骤操作到最后一步就成功了一半了,然后就是怎么使用这些证书。详情可以参考

证书安装指引。我的网站用的是nginx做的方向代理。按照指导配置如下:

server {
listen 80;
server_name www.iwillhaveacatoneday.cn;
rewrite ^(.*) https://$server_name$request_uri permanent;
} server {
listen 443;
server_name www.iwillhaveacatoneday.cn; #填写绑定证书的域名
ssl on;
ssl_certificate 1_iwillhaveacatoneday.cn_bundle.crt;
ssl_certificate_key 2_iwillhaveacatoneday.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location ^~ /static/ {
root /usr/share/nginx/html;
}
location / {
proxy_pass http://backend$request_uri;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
}
}

艰难踩坑

一波三折,好不容易获取证书,配置完nginx.conf。在重启nginx后,又遇到问题

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

根据提示我们执行systemctl status nginx.service(systemctl命令),从打印出来的日志我们发现了错误

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)

看来是nginx.pid文件丢失导致无法停掉nginx进程。

解决方案详见 Nginx 重启时丢失nginx.pid文件解决方法

我们直接简单粗暴用pkill -9 nginx停掉了Nginx,然后重启,顺利启动。

激动地在浏览器输入域名,回车,结果显示拒绝了我们的连接请求。WTF???明明我都可以通过ssh连接到服务器,拒绝连接请求什么鬼。不过仔细一想可能是是因为装了防火墙,把443端口给禁了,导致HTTPS服务没法访问。

因为腾讯云的安全组不是很好用,经常开发了端口结果没生效,当时就把安全组的端口全部暴露了,然后自己装了firewalld。所以只需要把firewalld的443端口开发就好

firewall-cmd --list-ports    #查看防火墙开放的端口
firewall-cmd --zone=public --add-port=443/tcp --permanent #防火墙添加443端口
firewall-cmd --reload #重启防火墙

然后重启Nginx,刷新页面,结果又报错了(活着好难。。。)

502 bad gateway

这回nginx应该没啥问题,估计是网站挂了,于是跑去看日志,果然发现一堆异常,程序貌似没有成功启动。为了确认,看下有没有网站的进程

ps -ef|grep solo

果然没有进程。重启网站后,再刷新,终于看到熟悉的首页,https成功配置完成。

阅读原文

网站配置https(腾讯云域名操作)的更多相关文章

  1. 【转载】网站配置Https证书系列(二):IIS服务器给网站配置Https证书

    针对网站的Https证书,即SSL证书,腾讯云.阿里云都提供了免费的SSL证书申请,SSL证书申请下来后,就需要将SSL证书配置到网站中,如果网站使用的Web服务器是IIS服务器,则需要在IIS服务器 ...

  2. 【转载】网站配置Https证书系列(三):IIS网站设置Http链接直接跳转Https安全连接

    Http链接请求是以明文的方式传输,在传输的过程中很容易被篡改数据,一个典型的例子就是运营商的网络劫持注入广告信息等,而Https请求则是安全加密的请求,报文数据以密文的形式进行传输.当IIS网站配置 ...

  3. 腾讯云域名申请+ssl证书申请+springboot配置https

    阿里云域名申请 域名申请比较简单,使用微信注册阿里云账号并登陆,点击产品,选择域名注册 输入你想注册的域名 进入域名购买页面,搜索可用的后缀及价格,越热门的后缀(.com,.cn)越贵一般,并且很可能 ...

  4. 【转载】网站配置Https证书系列(一):腾讯云申请免费的SSL证书的流程步骤(即https安全连接使用的证书)

    很多网站为了安全性考虑都会上https安全连接,此时就需要考虑使用SSL证书,其实在腾讯云这边提供有免费的SSL证书申请,登录腾讯云管理控制台后,进入SSL证书管理页面,里面有个申请免费证书.腾讯云申 ...

  5. 微信小程序/网站 上传图片到腾讯云COS

    COS简介: 腾讯云提供的一种对象存储服务,供开发者存储海量文件的分布式存储服务.可以将自己开发的应用的存储部分全部接入COS的存储桶中,有效减少应用服务器的带宽,请求等.个人也可以通过腾讯云账号免费 ...

  6. GitHub pages+自定义域名(腾讯云域名)+cloudflare加速

    本人也是第一次走完整个流程,github pages当然一直有使用,创建也很简单,并且网上教程也比较多:然后是关于自定义域名的问题,自己以前使用过国外的免费域名,然后是直接修改就ok了,然后这次使用了 ...

  7. CentOS给网站配置Https证书

    1.在腾讯云申请域名的证书 2.配置文件 安装相应模块: yum install mod_ssl openssl 编辑配置文件: cd /etc/httpd/conf.d vi jerryqi.con ...

  8. 给自己网站配置 https,http2 ,gzip压缩

    https 需要购买域名ssl证书 注意事项: 1.要开启HTTP/2协议支持,需要在nginx 1.10以上版本并且需要openssl库的版本在1.0.2及以上编译. 2.http2.0只支持开启了 ...

  9. 在阿里云域名https配置(nginx为例)

    如题: 在阿里云上注册了域名之后在阿里云域名控制台配置https: 1.在域名控制台选择要配置的域名,并在操作栏点击“解析” 2.在域名解析点击更多下的SSL进入到证书列表页,这里有收费的也有免费的, ...

随机推荐

  1. Akka源码分析-Actor发消息

    前面两篇文章简单介绍了ActorSystem.actor以及dispatcher和mailbox的创建,下面我们就来看一下actor发消息的内部机制. val system = ActorSystem ...

  2. Android 签名(5)用命令签名和用android studio,eclipse签名

    1,用命令签名 无论用哪个 IDE 开发,最终只是用了 keytool 和 jarsigner 这两个 Java 工具来完成签名任务(在 jdk 的 bin 目录下).其中 keytool 用来生成 ...

  3. Spring Cloud (7) 服务容错保护-Hystrix服务降级

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以互相调用,在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务通常会集群 ...

  4. SVN系列学习(一)-SVN的安装与配置

    1.SVN的介绍 SVN是Subversion的简称,是一个开发源代码的版本控制系统,采用了分支管理系统. 文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器.你可 ...

  5. mysql简单增删改查(CRUD)

    先描述一下查看表中所有记录的语句以便查看所做的操作(以下所有语句建议自己敲,不要复制以免出错): user表,字段有 id, name,age,sex:id为主键,自增,插入时可以写 NULL 或者 ...

  6. JavaWeb项目中引入spring框架

    主要步骤有以下3步: 1:下载spring的jar包2:在项目中web.xml中添加spring配置3:bean配置文件-applicationContext.xml 1:引入包,这个就不说了,官网下 ...

  7. JS——放大镜

    放大镜: 1.比例系数要恒定:在系数为4的情况下,若原图是820*512,那么小图必须是205*128,放大镜若是50,原图显示区域必须200 2.计算鼠标在小图中的坐标 3.放大镜需要在鼠标中间位置 ...

  8. SQL基本操作——case end

    case end进行多条件的判断 --查看Person表 select * from Person --对math字段进行条件判断 select name,数学成绩= case then '优' th ...

  9. Java编译器、JVM、解释器

    Java虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行.本文首先简要介绍从Java文件的编译 ...

  10. ubuntuKylin17.04重装KDE

    不小心安装了一个不知道什么的东西,把libROS的那一套都给卸载了,然后删除掉了KDE的很多库.然后KDM也丢失了.KDE界面启动之后,plasma-desktop界面也启动不了.选择重装. 然而出现 ...