SSL和HTTPS – 嗨软 https://ihacksoft.com/archive 分享最好用的常用软件 Tue, 22 Nov 2022 02:41:09 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.9.26 SSL 证书免费与收费的区别 https://ihacksoft.com/archive/1435.html https://ihacksoft.com/archive/1435.html#respond Mon, 07 Feb 2022 11:43:31 +0000 https://ihacksoft.com/?p=2173   SSL证书(SSL Certificates)可以说是现在一个网站的标配,如果没有用SSL证书,浏览器上会显示不安全,导致一部分用户以为网站有问题。另外在微信小程序和iOS APP上,提供的API必须要用HTTS协议,否则不允许上架,所以掌握好SSL证书的配置是一个后端开发必备的技能。

  在阿里云上,提供了每年可以申请一次的免费SSL证书,对于一些个人站点或者小公司的网站来说,确实是一个不错的选择。

免费的SSL证书和付费的有什么区别?

  可能有的人会问勇哥,收费版的SSL证书和免费版的证书有什么区别?首先说下他们的相同点。

1. 都是由信任的CA机构签发的。
2. 都是有一定的加密算法,能保证数据安全传输的。

  首先我们要知道,任何一个人,都可以给自己甚至别人签发SSL证书。但是这个世界上只有那么几家公司(比如Digicert(原Symantec,已更名)、GeoTrust以及TrustAsia,甚至还有一些国产公司)被权威机构所认可,他们的CA根证书被集成到操作系统中了,只有CA根证书被集成到操作系统中,这个CA根证书下的子证书才能被浏览器认为是安全的。

  这里说个真实的小故事,大家应该用过12306网站买票,在之前打开http://12306.cn网站的时候,浏览器会显示此网站不安全,在地址栏中显示一个红叉,甚至在Chrome中整个页面显示一个警告性质的红色,让人以为打开了一个钓鱼网站。其实原因很简单,就是当初12306用的根证书是他自己给自己颁发的,不是权威机构所认可的,操作系统中不存在这个根证书,导致曾经一段时间,用户体验相当差。如下图:

SSL 证书免费与收费

  当然,现在的12306已经改成了DiGiCert CN签发的证书了,用户体验上好了很多,那个恶心的叉叉也不见了!

  再回到正题,收费版的SSL证书和免费版的证书有什么区别,主要体现在以下几点:

  1. 品牌不一样: 像DigiCert这样的公司,是全世界最被认可的公司,他们签发的证书,可激活互联网最受信任的诺顿安全签章,价格肯定会有所差别了。

  2. 身份审核不一样: 免费的CA证书只会验证域名信息,由系统自动签发完成,签发速度几乎是立即完成。付费的CA证书会对验证网站的真实性做严格的验证,可以这样说,有付费SSL证书签发的网站,几乎是不可能有问题的,因此可信度比较高,但是签发周期也比较长,一般要3-15个工作日。

  3. 安全保险不一样: 付费的CA证书大多都有保险,最高可享受175万美元的保额,也就是说你的网站在使用SSL证书通信期间,被黑客攻击了,那么是可以享受保险的。但是免费的CA证书是没有的。

  4. 签发的域名不一样: 付费的CA整数一般都可以签发好几个域名,但是免费的CA证书只能签发一个域名。

  当然还有更多其他方面的不同,比如付费的CA证书加密算法方面会做得更加优秀等。但是如果只是一个个人站点,或者是小公司的网站,我们可以先用免费的CA证书来过渡。毕竟买一个付费的CA证书,最贵的一年也要1W多,少的也要1000多。

  以下来自又拍云的解释:

  免费SSL证书即为免费型的 DV SSL 证书,可以保护一个完整的域名,不支持通配符。免费 SSL 证书只需验证域名信息,签发速度非常快,几分钟即可签发。又拍云提供的 Let’s Encrypt DV SSL 证书,不但免费,甚至可以做到自动续期,节省人工成本。

  付费 SSL 证书主要分为付费的 DV SSL 证书、企业型 OV SSL 证书和增强型 EV SSL 证书三大类。OV SSL 证书、EV SSL 证书证书对申请者都需要做严格的身份审核验证,需要提供可信身份证明。签发时间一般在 3 至 15 个工作日。相比 DV SSL 证书,OV SSL 证书、EV SSL 证书需要严格的身份审核,其中涉及的资料包括申请人授权书、营业执照、组织机构代码证等等的重要信息。

  身份的认证是为了让用户对网站的真实进行验证,帮助他们去辨别网站的真实身份,免受中间的攻击或者误入钓鱼网站,建立起用户对网站真实性的信任。其中EV SSL 证书可以更直观地让用户体验到安全加密,其特有的绿色地址栏可以直接展现给用户,安全锁及组织机构名称的体现可以让用户更容易的识别该网站的真实性与安全性。

  免费证书并没有什么不好,和付费证书相比,更多的是他们适用于不同的场景。

免费 SSL 证书

  免费 DV 证书对于个人博客、小微企业、API 服务等的服务,可以节省一笔不菲的开支,并且免费 DV 证书足以满足基本的加密要求,提高用户对网站的信任,以及搜索引擎对SEO的优化。当然如果在有经济条件的情况下,付费 SSL 证书不失为一种更好的选择;

付费 SSL 证书

  对于中大型企业网站、金融平台和政府机关等付费的 OV、EV 证书则更加适用。付费 SSL 证书对信息传输过程有更高的加密验证,还可以通过 SSL 证书来彰显品牌形象,为消费者塑造更加可靠的形象。

]]>
https://ihacksoft.com/archive/1435.html/feed 0
快速找出服务器上 SSL 证书存放目录的技巧 https://ihacksoft.com/archive/1424.html https://ihacksoft.com/archive/1424.html#respond Thu, 27 Jan 2022 07:28:56 +0000 https://ihacksoft.com/?p=2162   网站的 SSL 证书快到期了,阿里云时不时地短信通知我尽快登录控制台进行更新。相信大部分个人站长跟我一样,用的是阿里云的免费 SSL 证书,有效期是一年。登录阿里云后台重新申请了 SSL 证书,下载对应的 Nginx 版本,是个压缩包,里面包含了 .pem 和 .key 文件,pem 存的是证书,key 存的是私钥。

  问题来了,时隔一年时间,我已经不记得之前的证书文件放在服务器上哪个目录了。怎么查找?最简单的方法两条命令搞定:
第一条是:ps -ef | grep nginx,找出了 nginx.conf 配置文件的目录。
第二条是:vi /usr/local/nginx/conf/nginx.conf,找到 ssl_certificate 路径。

[root@HQW-Aliyun ~]# ps -ef | grep nginx
root      2125  2091  0 14:17 pts/0    00:00:00 grep nginx
root     11272     1  0  2021 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
www      11273 11272  0  2021 ?        05:35:39 nginx: worker process                                          
[root@HQW-Aliyun ~]# vi /usr/local/nginx/conf/nginx.conf
……
server
        {
                listen 443 ssl;
                server_name ihacksoft.com www.ihacksoft.com;
                ssl_certificate /usr/local/nginx/cert/ihacksoft.pem;
                ssl_certificate_key /usr/local/nginx/cert/ihacksoft.key;
……
]]>
https://ihacksoft.com/archive/1424.html/feed 0
Nginx配置SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line 解决方法 https://ihacksoft.com/archive/1413.html https://ihacksoft.com/archive/1413.html#respond Thu, 20 Jan 2022 08:35:56 +0000 https://ihacksoft.com/?p=2149   单位的工程师在给 Nginx 服务器配置 SSL 证书的时候,遇到了一个 error:0906D066 的问题,过来询问是否是我们给的证书有问题,详细报错信息如下:

root@elsenow-virmach:~# nginx -t
nginx: [emerg] PEM_read_bio_X509_AUX("/root/elsenow-ecc.crt") failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)
nginx: configuration file /etc/nginx/nginx.conf test failed

  一开始以为是证书配置有问题,还特意检查了一遍SSL证书的key是否正确,仔细检查之后发现,key并没有问题,最后发现是证书链合并的时候出现了问题。

  因为我是用cat命令将两个crt格式证书合并的,导致两个文件合并的时候因为没有换行而第一个文件的结尾部分和第二个文件的开头部分合并在了一起,也就是这样:

-----END CERTIFICATE----------BEGIN CERTIFICATE-----

  解决方法也很简单,只需要将这两行手动拆分一下就行,也就是这样:

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

  注意前后–的数量保持一致就行。更改好之后,保存,重新启动 Nginx 就行了。

]]>
https://ihacksoft.com/archive/1413.html/feed 0
解读:https 和 http 区别,超详细看完必懂! https://ihacksoft.com/archive/1007.html https://ihacksoft.com/archive/1007.html#respond Mon, 20 Jan 2020 08:23:42 +0000 https://ihacksoft.com/?p=1736   现在越来越多的网站已经从 http 转向了 https,这是未来趋势。如果还停留在前者 http,很多浏览器比如 Chrome,直接就显示:不安全。很多人并不理解两者的区别,本文主要围绕https和与http的异同点进行分析了探究,与大家分享。

什么是http?

  要搞清什么是https前,首先要了解什么是http。

  HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW(万维网)文件都必须遵守这个标准。我们常见我网站、手机上的H5、甚至后台服务器端很多的接口,都是采用HTTP协议实现。

  所以我们需要上百度,就在浏览器中输入http://www.baidu.com,就可以访问百度的网站了。当然,一般的浏览器如果你没有输入http://,也会帮你自动补全这一部分的。

  以谷歌浏览器为例,输入访问 sports.sina.com.cn/nba/ 并访问新浪体育的NBA频道,然后点一下地址栏,复制一下网址。随便找个地方粘贴一遍:http://sports.sina.com.cn/nba/,就能发现前面已经带上了http://协议的标志。

  http的传输,具有简单、灵活的特点,但缺点是使用明文传输,请求和响应不会对通信方进行确认、无法保护数据的完整性,传输内容容易被窃取。

https 和 http 区别

什么是https?为什么要用https

  HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

https 和 http 区别

  网页内容采用https传输后,用户端和服务器端将利用“非对称加密算法”交换秘钥。服务器,也就是上图中的小红,先会生成一个公钥、一个秘钥。然后用证书封装公钥之后,把证书交给用户,也就是上图中的小明。

什么是证书?

  CA证书,是指由证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构,颁布给对应公司用的数字证书。CA是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。一般来说,证书业务都是要收费的。

  世界上很有多家证书颁发机构,程序猿哥哥们也可以生成自己的证书,但是很多证书是“不受信任的”,我们使用的微信、Google Chrome浏览器、iPhone的iOS系统等,都只选择信任那些具备公信力的证书颁发机构颁发的证书。

  证书颁发机构就像我们用的四通一达快递一样,大家选择他们就是因为觉得信得过,快递被掉包的可能性低。而那些小公司、或自行颁发的证书,就像一家没听说过的快递公司一样,大家去选择他们收发快递时,也不是不能用,但是碰上快递被盗的概率就可能上升。

  用户在获得服务器给的证书后,觉得这个证书值得信任,就打开它获得里面的公钥,与此同时,用户端会生成一串随机的字符串,然后用服务器的公钥对字符串进行加密,把加密完的内容发给服务费。

  服务器在获得用户发送的密文后,用私钥解密,就获得了用户端的密码。这个过程就叫做非对称加密。

  服务器知道了用户的密码后,双方传输数据前,都先用用户生成的那个密码对数据进行加密,然后再传输给对方,然后对方用这个密码进行解密。加密解密都用同一个秘钥的时候,这个过程就叫做对称加密。

  https的传输过程就是如此,先用非对称加密传输让双方获得一个对称加密的秘钥,然后双方再用这个对称秘钥进行数据的传输加密,这样能兼顾安全和快速。由于采用了密文传输,这时候第三方就不能窃听用户和服务器之间传输的内容了,这时候网站的安全性就获得了提高。

  可是这时候,小汪又想起另外一个问题,平常出了bug,程序猿哥哥们总是在说抓包抓包的,要抓包看看到底传了什么导致出错的,我们网站用了https协议后,数据就被加密了,那传了什么就不知道啦,那以后遇到bug怎么办呢?然后程序员哥哥会心一笑说:其实并没有什么,https也是可以抓包的,只需要安装一个证书就可以了。

对 https 抓包的原理

  前文提到了,服务器在把公钥发送给用户时,使用了一个证书来封装公钥,就像我们把东西寄给别人时,先用快递袋装好,再寄出去。如果我们选择了一家不可靠的快递公司,快递员偷偷把快递袋拆了,把里面的东西换了(也可能只是拆开看看里面都有啥),重新打包,再把快递继续送给对方,这就实现了https的抓包过程。

https 和 http 区别

  程序猿哥哥说的“装一个证书”,其实就是信任抓包软件的第三方证书,然后这个“黑心的快递员”,就会作为一个不老实的中间人,窃取了用户端生成的对称秘钥,然后不断的记录下用户与服务器之间传输的密文,并且用窃取到的秘钥进行解密,这样就知道了双方之间传输的内容了。

  小汪这时候恍然大悟,难怪网络上经常说,电脑和手机上不要乱装软件,网站虽然用了https加密传输的内容,但是如果自己手机上装了一个类似抓包软件的病毒软件,这时候就相当于把自己的账号密码、聊天内容都拱手送了出去呀!(文/iCheer

]]>
https://ihacksoft.com/archive/1007.html/feed 0
HTTPS 加速是什么?比 HTTP 好在哪里? https://ihacksoft.com/archive/464.html https://ihacksoft.com/archive/464.html#respond Tue, 12 Mar 2019 14:39:50 +0000 https://ihacksoft.com/?p=474   最近接触了不少阿里云的产品和服务,其中一项就是 HTTPS 加速,大致上是理解的,但没有深入去学习解读,刚好在阿里云相关页面找到了相关的概念解释,在此留一份。

什么是HTTPS

  HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,用于安全的HTTP数据传输。HTTPS提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

  据2017年EFF(Electronic Frontier Foundation)发布的报告,目前全球已有超过一半的网页端流量采用了加密的HTTPS进行传输。

使用HTTPS的意义

  HTTP明文传输,存在各类安全风险:
窃听风险:第三方可以获知通信内容。
篡改风险:第三方可以修改通信内容。
冒充风险:第三方可以冒充他人身份参与通信。
劫持风险:包括流量劫持,链路劫持,DNS劫持等。

  HTTPS是主流趋势:未来主流浏览器会将HTTP协议标识为不安全,谷歌浏览器Chrome 70以上版本以及Firefox已经在2018年将HTTP网站标识为不安全,若坚持使用HTTP协议,除了安全会埋下隐患外,终端客户在访问自身网站的时出现的不安全标识,也将极大的影响访问者的访问行为。

  百度与Google均对HTTPS网站进行搜索加权,主流浏览器均支持HTTP/2,而支持HTTP/2必须支持HTTPS。可以看出来,无论从安全,还是市场还是用户体验来看,普及HTTPS未来的一个方向,所以也强烈建议CDN用户,将访问协议升级到HTTPS。

如何选择证书

  从证书的认证级别来看,目前主要区分为DV、OV、EV三种类型:

DV是 Domain Validation,仅认证域名所有权,通常是验证域名下某个指定文件的内容,或者验证与域名相关的某条 TXT记录,显示明显的安全锁。

OV是 Organization Validation,是指需要验证企业组织真实性的标准型SSL证书,DV SSL证书更加安全可信,安全保险也会更高。同时审核也会更加严格,审核周期也更长。一般多用于电商,教育,游戏等领域。

EV是 Extended Validation,CA/browser forum指定的全球统一标准,通过证书object identifier(OID)来识别,显示完整企业名称,是目前全球最高等级的SSL证书多用于金融支付,网上银行等领域。

应用场景

  主要将应用场景分为以下五类:

企业应用:若网站内容包含crm,erp等信息,这些信息属于企业级的机密信息,若在访问过程中被劫持或拦截窃取,对企业是灾难级的影响。

政务信息:政务网站的信息具备权威性,正确性等特征,需预防钓鱼欺诈网站和信息劫持,避免出现信息劫持或泄露引起社会公共或信任危机。

支付体系:支付过程中,涉及用户敏感信息如姓名,电话等,防止信息劫持和伪装欺诈,需启用HTTPS加密传输,避免出现下单后下单客户会立即收到姓名、地址、下单内容,然后以卡单等理由要求客户按指示重新付款之类诈骗信息,造成客户和企业的双重损失。

API接口:保护敏感信息或重要操作指令的传输,避免核心信息在传输过程中被劫持。

企业网站:激活绿色安全标识(DV/OV)或地址栏企业名称标识(EV),为潜在客户带来更可信、更放心的访问体验。

]]>
https://ihacksoft.com/archive/464.html/feed 0
阿里云 Tomcat 服务器安装PFX格式SSL证书开启HTTPS https://ihacksoft.com/archive/459.html https://ihacksoft.com/archive/459.html#respond Sun, 10 Mar 2019 18:29:41 +0000 https://ihacksoft.com/?p=469   Tomcat支持PFX格式和JKS两种格式的证书,您可根据您Tomcat的版本择其中一种格式的证书安装到Tomcat上。

前提条件

  申请证书时需要选择 系统自动创建CSR。申请证书时如果选择手动创建CSR,则不会生成证书文件。您需要选择其他服务器下载.crt文件后,使用openssl命令将.crt文件的证书转换成.pfx格式。本文档证书名称以domain name为示例,如证书文件名称为domain name.pfx。

操作指南

  登录阿里云SSL证书控制台。在SSL证书页面,点击已签发标签,定位到需要下载的证书并单击证书卡片右下角的下载打开证书下载对话框。在证书下载对话框中定位到Tomcat服务器,并单击右侧操作栏的下载将Tomcat版证书压缩包下载到本地。解压Tomcat证书。您将看到文件夹中有2个文件:
证书文件(以.pfx为后缀或文件类型)
密码文件(以.txt为后缀或文件类型)

  每次下载证书都会产生新的密码,该密码仅匹配本次下载的证书。如果需要更新证书文件,同时也要更新匹配的密码。

  在Tomcat安装目录下新建cert目录,将下载的证书和密码文件拷贝到cert目录下。打开Tomcat > conf > server.xml文件,在server.xml文件中添加以下属性(其中port属性请根据您的实际情况修改):

  保存server.xml文件配置,重启Tomcat。

]]>
https://ihacksoft.com/archive/459.html/feed 0
Apache 服务器安装 SSL 证书开启 HTTPS https://ihacksoft.com/archive/457.html https://ihacksoft.com/archive/457.html#respond Sun, 10 Mar 2019 15:36:05 +0000 https://ihacksoft.com/?p=467 下载证书

  前提是已经成功申请了 SSL 证书,然后登录阿里云 SSL 证书控制台。在SSL证书页面,点击已签发标签,定位到需要下载的证书并单击证书卡片右下角的下载打开证书下载对话框。

  在证书下载对话框中定位到 Apache 服务器,并单击右侧操作栏的下载将 Apache 版证书压缩包下载到本地。解压Apache证书,您将看到文件夹中有3个文件:
证书文件(以.crt为后缀或文件类型)
证书链文件(以.crt为后缀或文件类型)
秘钥文件(以.key为后缀或文件类型)

  crt扩展名的证书文件采用 Base64-encoded 的 PEM 格式文本文件,您可根据需要修改成 .pem等扩展名。

安装证书

  在Apache安装目录中新建cert目录,并将下载的Apache证书、证书链和秘钥文件拷贝到cert目录中。打开Apache/conf/httpd.conf,在httpd.conf文件中找到以下参数并进行配置。

#LoadModule ssl_module modules/mod_ssl.so   
#删除行首的配置语句注释符号“#”加载mod_ssl.so模块启用SSL服务,Apache默认是不启用该模块的。如果找不到该配置,请重新编译mod_ssl模块。
#Include conf/extra/httpd-ssl.conf   删除行首的配置语句注释符号“#”。

  保存httpd.conf文件后退出。打开Apache/conf/extra/httpd-ssl.conf,在httpd-ssl.conf文件中找到以下参数并进行配置。根据操作系统的不同,http-ssl.conf文件也可能存放在 conf.d/ssl.conf目录中。

SSLProtocol all -SSLv2 -SSLv3    
# 添加SSL协议支持协议,去掉不安全的协议。
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM    
# 使用此加密套件。
SSLHonorCipherOrder on
SSLCertificateFile cert/domain name_public.crt    
# 将domain name_public.crt替换成您证书文件名。
SSLCertificateKeyFile cert/domain name.key    
# 将domain name.key替换成您证书的秘钥文件名。
SSLCertificateChainFile cert/domain name_chain.crt   
# 证书链开头如果有#字符,请删除。

  保存httpd-ssl.conf文件配置,重启Apache服务器使SSL配置生效。在Apache bin目录下执行以下命令停止后启动Apache服务:
apachectl -k stop,apachectl -k start

]]>
https://ihacksoft.com/archive/457.html/feed 0
WordPress 设置开启全站 HTTPS 的几个步骤 https://ihacksoft.com/archive/453.html https://ihacksoft.com/archive/453.html#comments Sat, 09 Mar 2019 06:40:30 +0000 https://ihacksoft.com/?p=463   一切工作准备就绪了,最后一步就是修改 WordPress 相关设置以开启全站 HTTPS。在开启之前,要先在域名的 www 之前加“https://”确认一下首页和文章页是否可以打开,如果可以,才能继续配置全站 HTTPS,不然都打不开了。当我打开首页的时候,发现页面全乱了,显然是 CSS 的问题,CSS 是通过七牛外部调用的,并没有开启 SSL。

  于是买了个阿里云 OSS,并开启 SSL,通过 https 调用资源。期间也遇到了首页打开正常文章 404 找不到的情况,已解决。接下来设置 WordPress:

一、替换外部调用的 CSS、JS 等文件链接

  很简单,直接修改 header.php 文件,将 http 更换成 https,当然是要在测试成功的前提下进行。

二、修改后台地址

  登录 WordPress 后台,在设置-常规里将 WordPress 地址(URL)和站点地址(URL)改成 https 链接。

三、强制后台和登录使用 SSL

  打开网站根目录下的 wp-config.php 文件,在代码最底部增加以下两行:

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

四、替换所有的文章图片地址

  很多地方都提到采用在 functions.php 里加入代码的方式,个人认为完全没有必要,直接打开数据库替换即可,语句如下:

UPDATE wp_posts SET post_content = replace(post_content, 'http://img.ihacksoft.com/','https://cdn.ihacksoft.com/');
]]>
https://ihacksoft.com/archive/453.html/feed 1
WordPress 开启 HTTPS 后首页正常而文章页 404 原来是这么回事! https://ihacksoft.com/archive/452.html https://ihacksoft.com/archive/452.html#respond Fri, 08 Mar 2019 16:36:18 +0000 https://ihacksoft.com/?p=462   WordPress 升级 SSL 开启 HTTPS 整个过程都挺顺利的,不过也遇到一些小问题。Nginx 导入证书配置 HTTPS 后,访问网站首页,加上 https 是可以正常访问了,但是我发现打开文章页全是 404 无法访问,很奇怪。更奇怪的是,网上搜了好多文章,遇到这种情况的屈指可数,所以当时就意识到我可能是犯了一个低级的错误。

  一开始还以为是伪静态的问题,后来发现不是,肯定是配置问题,所以重新回去阅读参考了不少文章。看来看去,我的配置并没有问题啊!几经周折,最后才发现真的是傻!归根到底,还是我对 Nginx 不熟造成的。因为一开始参考了阿里云官方的配置方法,它是将证书的配置信息写入 conf 目录下的 nginx.conf 文件。但每个人实际情况其实不同,一个 VPS 下不是只建一个网站,所以要配置不是 nginx.conf,而是 vhost 目录下对应的域名配置文件。果然,改过来之后,一切正常了,希望能帮到同样遇到此问题的朋友。

]]>
https://ihacksoft.com/archive/452.html/feed 0
开启 HTTPS – Nginx 服务器安装 SSL 证书全过程 https://ihacksoft.com/archive/451.html https://ihacksoft.com/archive/451.html#respond Fri, 08 Mar 2019 15:41:08 +0000 https://ihacksoft.com/?p=461 申请了免费的 DV SSL 证书,接下来要做的就是将证书导入服务器。我的环境是 LNMP (Linux+Nginx+MySQL+PHP),所以我要做的是配置 Nginx 服务器以开启 SSL。]]>   HTTPS 的好处不用多解释了吧,很多网站都已经开启了,我已经落伍了,打算将自己的 WordPress 开启全站 https。之前成功申请了免费的 DV SSL 证书,接下来要做的就是将证书导入服务器。我的环境是 LNMP (Linux+Nginx+MySQL+PHP),所以我要做的是配置 Nginx 服务器以开启 SSL。

一、下载 SSL 证书

  首先当然是要申请证书,个人网站申请免费的就可以了。前几天已经申请了,速度还挺快的,半天就通知说通过了。进入阿里云后台, 鼠标放“产品与服务”上,拉到下面的“安全(云盾)”一栏,找到 SSL证书(应用安全),或者直接在上方搜索 SSL 寻找,阿里的产品与服务实在太多了!找起来费劲。进入“SSL证书”后,点击“已签发”,下载已签发的证书。

  下载下来后是一个压缩包,里面包含了两个文件:一个 .key 文件(秘钥文件)和一个 .pem 文件(证书文件)。pem扩展名的证书文件采用Base64-encoded的PEM格式文本文件,您可根据需要修改成其他扩展名。

二、配置 Nginx 安装 SSL 证书

  SSH 登录 VPS 服务器,找到 Nginx 的安装目录,我的在 cd /usr/local/nginx/,新建一个目录 cert(名称可自定义)。然后连接 FTP,将下载的证书文件和秘钥文件上传到服务器,通过 cp 命令拷贝到 cert 目录中。

  接下去配置证书。打开 /usr/local/nginx/conf/vhost/ 目录,找到你要配置网站的 conf 配置文件,修改 server 段,以下是参考阿里云的官方文档配置信息:

以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
listen 443;
server_name ihacksoft.com ihacksoft.com;  # localhost修改为您证书绑定的域名。
ssl on;   #设置为on启用SSL功能。
root html;
index index.html index.htm;
ssl_certificate /usr/local/nginx/cert/hack520.pem;   #将hack520.pem替换成您证书的文件名。
ssl_certificate_key /usr/local/nginx/cert/hack520.key;   #将hack520.key替换成您证书的私钥文件名。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #修改protocols。
ssl_prefer_server_ciphers on;   
location / {
root html;   #站点目录。
index index.html index.htm;   #添加属性。
}
}

保存后 service nginx restart 重启 Nginx。

]]>
https://ihacksoft.com/archive/451.html/feed 0