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

如何搭建HTTPS服务器

时间:2023-03-14 20:23:09 科技观察

大家对HTTPS的基本原理已经不再陌生。今天就和大家聊聊如何搭建一个支持HTTPS的服务器。HTTPS服务端的HTTPS几乎成为了现在互联网推荐的通信方式。可以最大限度地保证信息传输的安全性。从去年苹果强制HTTPS,现在各大网站都支持HTTPS。它将变得越来越流行。之前写过几篇关于HTTPS原理的文章,有网友留言希望学习如何在服务端搭建HTTPS服务。这次,我就和大家聊聊这个话题。SSL证书搭建一个HTTPS站点,第一步是申请SSL证书,在标准的证书颁发机构申请。当然,从技术上讲,您可以使用自签名证书,但是自签名证书会被所有浏览器视为不安全的证书,并且会向用户报错,像这样:所以,您仍然需要申请正式证书。可以申请证书的发证机构有很多,例如GoDaddy、Comodo、Verisign等。一年的价格从几块钱到几十块钱不等。下面以GoDaddy为例,给大家展示一下流程。GoDaddy主页上有一个网络安全选项卡。点击这个选项卡后,可以找到SSLCertificates选项:点击它,可以看到几种可选的证书形式,包括单个域名,允许多个二级域名等。:避免广告嫌疑,价格以下信息略去~,这里只介绍过程,帮助大家理解。您可以自行选择证书服务商。接下来,证书颁发机构会要求您填写一个叫做CSR的东西。如果你是从事iOS开发的,应该对这个不陌生。你在申请苹果开发者证书的时候,也做过类似的事情。CSR的全称是CertificateSigningrequest。顾名思义,就是申请证书需要的一些信息。在Lunix系统下,可以通过命令生成(大部分服务器应该是基于Linux的,所以我们以它为例):$opensslreq-new-newkeyrsa:2048-nodes-keyoutyourdomain.key-outyourdomain.csropenssl命令,如果你的系统没有安装,你可以先通过包管理安装。您需要将yourdomain.key和yourdomain.csr替换为您自己的名称,可以是域名或其他标识符。生成成功后,可以使用cat命令输出yourdomain.csr中的内容:$catyourdomain.csr会在命令行输出CSR的内容,将此内容复制到上图的文本框中,然后单击生成。请注意,您应该在此处保留yourdomain.key文件。这是您证书的私钥,您稍后在配置HTTPS时将需要它。而且无法再生,也无法泄露。原因可以参考我之前关于HTTPS原理的相关文章。同时,证书颁发机构会在你提交CSR后为你生成一个证书文件,而Godaddy会生成两份证书,一份是你站点的证书,一份是根证书。将它们下载到您的服务器。Apache服务器配置证书准备好后,我们需要配置服务器程序支持HTTPS。这里我以CentOS7操作系统和Apache2.x服务器程序为例。Apache的HTTPS配置文件一般位于/etc/httpd/conf.d/ssl.conf。用vim编辑器打开,然后添加这样一个节点:SSLEngineOnSSLCertificateFile/root/yoursite.crtSSLCertificateKeyFile/root/yoursite.keySSLCACertificateFile/root/rootcert.crtServerAdminadmin@yoursite.comServerNameyoursite.comDocumentRoot/var/www/html//这里用到了我们之前准备好的证书和秘钥。SSLCertificateFile是您站点的证书,SSLCACertificateFile是根证书,SSLCertificateKeyFile是仅存储在您的服务器上的私钥。有了这些信息,Apache就可以正确处理HTTPS请求。在此之前,我们需要做最后一步,编辑/etc/httpd/conf/httpd.conf文件,这是Apache的主要配置文件,添加这一行:Listen443这是让你的服务器监听443端口同一时间。这个设置是必须的,因为HTTPS的默认端口是443。一切准备就绪后,重启你的服务器:systemctlrestarthttpd然后用浏览器输入https://yoursite.com访问你的站点,你应该可以看到小锁定HTTPS验证成功。防火墙设置如果配置好了,重启后还是不能正常访问,可能是你的防火墙屏蔽了443端口,打开:iptables-AINPUT-ptcp-mtcp--sport443-jACCEPTiptables-AOUTPUT-ptcp-Endofmtcp--dport443-jACCEPT目前成熟的web服务程序都对HTTPS有很好的支持,只需要经过简单的配置就可以完成HTTPS服务器的搭建。HTTPS之所以比较消耗性能,是因为每次数据传输都需要进行加解密操作。作为APP开发者,可能对服务端技术了解不是很深,可以当做备忘,以后需要的时候再看看。