当前位置: 首页 > 科技观察

点亮你的HTTPS?原来这么简单!!

时间:2023-03-19 01:15:09 科技观察

HTTPS现在挺流行的,但是还是有很多同学没有学会如何部署HTTPS。正好明哥前段时间在折腾网站,可以把这个过程详细记录下来,教大家如何部署自己的HTTP网站。点亮HTTPS。如果要使用HTTPS,还有很多事情要做:准备域名和服务器(自己准备),将域名解析到你的服务器ip,生成CSR证书请求文件,拿CSR文件去申请获取证书并申请将证书部署到你的服务器1.设置DNS解析我有一个域名iswbm.com,下面有很多子域,比如Python的在线博客python.iswbm.com,以及在线博客golang.iswbm为Golang.com,还有我的图床image.iswbm.com等等。在这里新建一个子域名demo.iswbm.com,设置为解析到我的服务器,如下图(服务器ip已经编码)。2.建立一个HTTP站点为了方便,我将使用Apache在这里放置一个HTTP静态网页。方法很简单,大家可以自行百度。3.申请SSL证书如何获得SSL数字证书?您可以自己制作,也可以向CA机构申请。两者的区别在于:自己颁发的证书需要客户端进行验证,即需要用户手动安装证书并设置为可信根证书。但即便如此,浏览器(chrome、firefox)仍然无法识别这个自签名证书,会在地址栏前提示连接不安全。手动安装证书后,也会提示证书无效。如果您想继续访问而忽略提示,可以选择继续访问。向权威的数字证书认证机构申请,因为这些机构在网友的电脑中都有相应的根证书,这些机构是绝对值得信赖的。所以当你访问一个网站时,你不会被提示连接不安全。下面,我将向您展示这两种方法的工作原理。第一种方法:向权威的CA机构申请。阿里云和腾讯云都可以申请SSL证书。证书申请有收费的(价格不便宜),也有免费的。看了一圈,只有腾讯云有免费证书。SSL证书申请通道(阿里云之前听说有,后来关闭了)。本文仅作演示和教学之用,只使用腾讯云的免费证书即可。登录腾讯云,可以看到SSL证书有多种类型,有企业型、企业型专业版、增强型、增强专业版、域名型免费版。点击选择域名类型免费版点击免费快速申请后,填写域名和您的个人邮箱,点击下一步,您将需要验证域名的所有权。验证方式一共有三种:自动DNS验证手动DNS验证文件验证但是由于我的域名不是腾讯云平台解析的,所以没有自动DNS验证的选项。只有两个其他选择。点击确认申请后,系统会提示您进入域名验证流程。这里我选择手动DNS验证。审核通过后,将在3秒内为您颁发证书,您可以在控制台点击证书进行下载。下载将是一个zip包。解压,会有不同服务器类型(Apache、IIS、Nginx、Tomcat)的文件夹。我用的是Apache,这个文件夹下有三个文件:1_root_bundle.crt:根证书2_demo.iswbm.com.crt:域名证书3_demo.iswbm.com.key:私钥文件这三个文件,下一步会部署在我的服务器上。接下来说说第二种申请SSL证书的方式。第二种:自签名SSL证书,没有权威的第三方CA机构给自己颁发证书,再颁发给自己。制作自签SSL证书的过程可以分为两步:如果要做CA机构,CA必须有CA根证书和私钥。因此,第一步是生成CA的crt证书和CA的私钥。.申请证书,首先服务器必须有一对密钥(公钥和私钥)来保存上面生成的公钥,制作CSR证书申请文件并使用第一步中的CA私钥对CSR进行签名和生成所需的SSL数字证书文件。步骤多,命令多,命令中的参数也多。对于只想学习证书颁发流程的你来说,把这些命令全部背下来并不是一个好的选择。毕竟,这种事情,你可能做不了几次。所以,我把这些步骤和命令整合成一个shell脚本,你只需要执行这个脚本即可。$bashcreate_self-signed-cert.sh--ssl-domain=demo.iswbm.com--ssl-trusted-domain=demo.iswbm.com--ssl-size=2048--ssl-date=3650对应参数说明,脚本中有解释。这个脚本太长了,不好直接贴出来。我会放在我的公众号(Python编程时间)后台,大家可以直接回复“证书签名”直接获取下载。执行完成后,会在当前目录下生成几个文件。其中,只有两个文件对我们有用。4.部署SSL证书根据服务器类型的不同,部署和安装的方法也不同。腾讯云的操作文档非常详细。您可以通过此链接访问以下文档:https://cloud.tencent.com/document/product/400/4143这里我以CentOS7.2+Apache为例,演示如何部署SSL证书。首先安装mod_ssl$yuminstall-ymod_ssl安装完成后在/etc/httpd/conf.d/目录下会有一个ssl.conf文件。编辑修改这个文件,下面是我的配置供大家参考DocumentRoot"/var/www/html"#填写证书名称ServerNamedemo.iswbm.com#启用SSL功能SSLEngine#CertificatefilepathSSLCertificateFile/etc/pki/tls/certs/demo.iswbm.com.crt#私钥文件的路径SSLCertificateKeyFile/etc/pki/tls/private/demo.iswbm.com.key#root的路径证书文件SSLCACertificateFile/etc/pki/tls/certs/ca-bundle.crt如果您的证书是从权威CA机构申请的。比如我上面是从腾讯云申请的,那么这三个文件就是从腾讯云的控制台下载下来的三个文件。修改后一定要记得把下载的三个文件放到对应的目录下。配置ssl.conf后,可能还需要查看/etc/httpd/conf/httpd.conf中的一些配置。这些配置用默认的一般就ok了,但是为了以防万一,还是写Includeconf.modules.d/*.conf中写这行的目的是为httpd$cat/etc/httpd/conf加载mod_ssl模块。modules.d/00-ssl.confLoadModulessl_modulemodules/mod_ssl.so所有配置完成后,记得重启httpd服务$systemctlrestarthttpd然后用chrome访问https//demo.iswbm.com看看,大功告成.如果您的证书是自签名的。ssl.conf配置文件要改成这个DocumentRoot"/var/www/html"#填写证书名称ServerNamedemo.iswbm.com#启用SSL功能SSLEngine#证书文件路径SSLCertificateFile/etc/pki/tls/certs/tls.crt#私钥文件SSLCertificateKeyFile路径/etc/pki/tls/private/tls.key同时记得把这两个文件复制到对应目录$cptls.crt/etc/pki/tls/certs/$cptls.key/etc/pki/tls/private/最后别忘了重启httpd$systemctlrestarthttpd尝试用chrome访问,可以看到chrome提示连接不安全如果你坚持要访问,可以点击左下方的继续,这样以后再次访问的时候就不会再出现这个警告页面了。“没有安全感”三个字,让人觉得很没有安全感。有什么办法可以去除它们吗?答案是否定的,只要是自签名证书,chrome、firefox等主流浏览器都认为是不安全的。即使您将此根证书添加到您的受信任证书列表中,也是徒劳的。让我们尝试安装这个根证书。按照下图提示,将证书拖到本地磁盘。在Mac上打开KeychainAccess点击登录,然后将证书拖到窗口进行安装,右击证书,点击显示介绍,弹出如下界面后点击信任,选择IP安全为始终信任.设置好后,再次访问demo.iswbm.com,还是显示连接不安全,证书无效。点击证书显示证书,证书确实已经放入信任列表。文章到此结束,大家应该已经了解点亮HTTPS的整个过程是怎样的了。本文转载自微信公众号《Python编程时间》,可通过以下二维码关注。转载本文请联系Python编程时间公众号。