在腾讯云的CentOS+Apache环境上实现全站https
在腾讯云的CentOS+Apache环境上实现全站https
https已经受到诸多互联网大企业的推荐,成为网站的基础配置,已经是大势所趋。尤其是在一些免费的SSL证书出现之后,很多个人、小企业的网站也开始支持https了。因此,今天博主就把自己在腾讯云上的配置https的过程写下来,供大家参考。
1.免费SSL证书申请
要配置https,首先要有SSL证书。SSL证书有屌丝版(免费)和土豪版(收费)之分,这里,我申请的当然是屌丝版了。提供屌丝版的SSL证书比较常见的就是TrustAsia、Let’s Encrypt 等。TrustAsia的证书呢,有效期有一年,但是,只支持绑定一个一级域名或者子域名。而Let’s Encrypt 的证书,有效期只有三个月,但是支持通配符,也就是说,对二级域名的数量没有限制。因为个人需要,我这里选择申请Let’s Encrypt 的通配符SSL证书。
1.1制作CSR文件
在申请之前Let’s Encrypt的证书之前,我们需要先制作一个CSR文件,我们可以通过在线制作,地址如下:点击在线制作CSR。点击之后,参看下图,填写内容,制作CSR文件。
填写完成后,点击生产CSR文件,即可自动生产CSR文件。为了方便,建议勾选:选中后发送生产的CSR文件到上面输入的邮箱。
点击之后,会生产两个文件,一个CSR文件,一个KEY文件,请分别点击下载。
下载下来的CSR文件,默认名字为:star.域名_csr
,而KEY的默认名字则是:star.域名_key
。
1.2申请SSL证书
制作好CSR文件以后,我们就可以申请SSL证书了。我的SSL证书是在:FreeSSL.org上申请的,所以,这一步仅供大家参考。
打开连接,FreeSSL.org提供了三种免费证书供大家选择,如果想要通配符域名证书,请勾选Let’s Encrypt V2,然后在域名出,填写好要申请的域名,通配符域名写成:*.example.com
,比如,www.qq.com
,就写成*.qq.com
。完成以后,点击创建免费的SSL证书,即可。
点击以后,需要填写部分内容,第一个是域名所有人的邮箱地址,然后CSR生成出,请选择我有CSR,选择以后,最下面有一个内容框,里面填写的内容,是把我们在上一步下载的star.域名_csr
文件,用记事本或者NotePad++打开,把里面的内容全部复制粘贴到里面去即可。最后就是点击创建证书。
证书创建时,有一个DNS验证环节,来验证你是否是域名的所有者。在这一环节,我们需要记录值一览的内容复制下来,然后在DNS解析中添加一个TXT的解析记录:
添加完成后,我们先检测一下是否已经添加成功。点击DNS验证页面的右下角的配置完成,检测一下。
检测成功以后,如下图。如果不成功,在确认解析记录没有添加错误的话,可以等待几分钟,等DNS缓存更新后,再次检测。
检测成功以后,我们就点击:点击验证,开始进行DNS验证。
验证通过,就会自动生成SSL证书了。我们将证书下载下来即可。
1.3上传证书到腾讯云,进行托管
其实,完成上一步,我们的证书已经申请完成了。不过,为了方便,我还是建议把证书上传到腾讯云上,进行托管。我们从FreeSSL.org上下载来的证书,是一个zip压缩包。里面有两个文件,一个是full_chain.pem
,一个是private.key
。我们只需要第一个文件解压出来就行。
然后,我们选择腾讯云的控制台界面的左上角的云产品,点击:SSL证书管理,进入SSL证书管理。
在SSL证书管理界面,点击上传证书。
在上传证书时,需要填写两个信息,一个是证书内容,一个是私钥。
证书内容就是我们刚才下载、解压出来的full_chain.pem
文件里的内容,用记事本或者NotePad++打开,把里面的内容,复制粘贴到证书内容里即可。
而私钥内容,则是我们在制作CSR文件时,下载下来的star.域名_key
文件。同样是用记事本或者NotePad++打开,把里面的内容复制粘贴到私钥内容里就行。
两个内容都复制粘贴好以后,点击上传,就完成了证书的上传。
2.配置https
2.1上传证书到云服务器
要配置https,需要在服务器端有SSL证书。因此,我们需要把申请好的SSL证书上传到服务器上。我们先把证书从腾讯云的SSL证书管理上下载下来。之所以又要从腾讯云上下载一次,是因为腾讯云下载下来的是证书经过了转化,更方便我们在后面的配置。
当然,下载证书过程很简单,直接点击下载就可以了。不过要注意,如果你申请了多个证书,要选择正确的证书。
从腾讯云下载下来的证书,默认文件名是:域名.zip。里面有三个文件,Apache、IIS和Nginx,因为我用的是Apache作为服务器,所以,只需要把Apache文件夹解压出来就可以了。Apache文件夹里,有三个文件,默认的名字,分别为:1.1_root_bundle.crt
;2.2_域名.crt
;3.3_域名.key
。然后通过FTP把Apache文件夹上传到服务器,上传后,Apache文件夹的路径为:/A/Apache。
我们先Apache软件的安装目录里,建立一个文件,用来存放SSL证书,命令为:
mkdir /etc/httpd/ssl
然后把我们上传的证书文件,移动到ssl文件夹里,命令为:
mv /A/Apache/* /etc/httpd/ssl
要再强调一下,这里的/A/Apache,请根据实际情况填写正确的路径。
2.2安装并配置OpenSSL
服务器软件Apache要配置https需要一个mod_ssl模块,因此,我们需要安装mod_ssl。安装很简单,通过yum安装,参数y是表示默认安装。
yum install mod_ssl -y
安装完成后,mod_ssl会自动生成一个/etc/httpd/conf.d/ssl.conf,我们需要对它进行配置。
vim /etc/httpd/conf.d/ssl.conf
需要修改的地方,不多,就三个参数1.SSLCertificateFile: SSLCertificateFile /etc/httpd/ssl/2_域名.crt
;2.SSLCertificateKeyFile:/etc/httpd/ssl/3_域名.key
;3.SSLCertificateChainFile:/etc/httpd/ssl/1_root_bundle.crt
。
修改完成后,重启Apache。就能以https://域名的方式访问网站了。
2.3强制跳转https
当然了,按照上面的设置,网站是http和https同时存在的。如果喜欢,可以进行https的强制跳转。当然,方法很多,最常见的就是.htaccess来进行强制跳转。用.htaccess来实现强制跳转,方法和代码也很多,这里我就写一个,供大家参考。这一方法是通过HTTP 80 强制转 HTTPS来实现的。
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)https://域名/1 [R,L]