您当前的位置:首页 > 电脑百科 > 站长技术 > 网站

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

时间:2021-03-03 10:48:53  来源:  作者:

程序员创业必备:如何让Web服务支持https协议,有哪些免费CA机构

原创声明

这是本人署名原创文章,未经许可不支持转载且请勿抄袭。本公众号的所有文章均原创。为了容易理解和记忆,文章以图解为主、代码为辅。如果您感兴趣,欢迎关注!

:吴潇/JAVA高级工程师

我们都知道,http协议是明文传送,安全性很差,被用得越来越少,正在被https协议取代。很多浏览器例如chrome只要访问一个http协议网站,就会弹出风险提示,让用户感觉这个网站不靠谱、有病毒、会泄漏账号密码,不敢进,从而对网站发展产生不利影响。

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

 

所以,对于要搞副业/创业的程序员来说,搭建web服务一定要支持https。本文就是要教你如何让web服务支持https协议。

假如你对https协议中的SSL证书、CA等概念还不太熟悉,建议先学习一下相关基础,可以参考本篇

现在我们开始搭建https,首先需要一个合法的SSL证书(后文简称"证书")。怎么得到合法证书呢?基本上只有两条路。

向权威CA机构购买证书。

自己创建CA(经过一系列配置,效果等价于权威机构颁发的SSL证书)。

向权威CA机构购买证书的方案是正规渠道,可以实现网站HTTPS化,使网站可信,防劫持、防篡改、防监听、安全加密,适合知名大型网站。然而缺点很明显,就是要花钱,而且不是一次性购买得到的,而是被设置了有效期的,有效期到了之后还要续费才能继续使用,因此不太适合中小型网站/App

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

某云平台推荐的收费CA机构

购买证书方案的操作比较简单,只要在云平台上找到相应服务,填资料,然后付款即可。

不过,这世界上也是有免费的权威CA机构的,可以试试这家免费CA。如果这个能用,就不用自己搭CA了。这家免费CA机构名为Let's Encrypt,地址 https://letsencrypt.org/,在国外比较有名气。

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

免费且使用广泛的CA

(某国内排名第一的云平台为什么不推荐这家CA?钱的问题?)

另一个方案就是自己建CA,把CA证书部署到自己的客户端,再用自己的CA给web服务颁发证书。效果上是可以实现https安全性,而且不用花钱买证书,缺点只是没有权威机构的认可罢了。其实,不管是买证书还是自己搭建CA,底层原理都一样。

下面就介绍怎么自己搭建CA,然后给自己的web服务创建证书,最终在自己的app上实现https。

一、创建自己的CA

你可能认为搭建CA很复杂,需要安装服务端软件、写配置文件等。然而,实际上,搭建CA的步骤异常简单。在任意一台安装了openssl(一般系统默认安装好了)的linux机器上,用以下命令生成CA private key:

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

 

执行以上命令之后,要求输入一个密码(给这个CA private key用)。如果不输入密码,其他人拿到这个CA private key之后,不用输入密码就可以冒充你。输入完密码之后,输出如下:

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

 

然后,执行以下命令生成根证书(CA证书):

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

 

然后输入前面CA private key的密码,回答一系列问题(即查看证书时显示出来的单位名称、国家、地区之类的信息)。

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

 

到目前为止,已经创建了2个文件 myCA.key(即CA private key)和myCA.pem(CA根证书)。持有这2个文件,你就已经成为一个CA,当然,是不出名的那种。

二、CA证书安装到客户端

有了CA private key和CA证书之后,把CA根证书安装到客户端上,这个客户端访问自己的web服务就是https的了。但是,没有安装CA证书的客户端访问你的web服务,依然不支持https。

不同平台的客户端安装CA证书的方法不太一样,例如在Android手机上,可以访问"设置->安全和隐私->更多安全设置->加密和凭据"来查看已经安装的CA证书(凭据)和安装自己的CA证书。

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

android上如何管理根证书

三、给web服务器创建证书

有了CA private key 和 CA根证书后,我们就可以对web服务的证书进行签名了。web服务器也需要自己创建一个证书(然后拿去给CA签名),步骤如下。首先创建一个web server用的private key,命令如下:

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

 

然后,创建一个CSR(Certificate Signing Request)文件,

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

 

这里的操作与上面生成CA证书的操作类似。

接下来,再创建一个配置文件。这个配置文件(文本文件)主要是用来定义Subject Alternative Name (SAN) 扩展的(具体见https://deliciousbrains.com/https-locally-without-browser-privacy-errors/#creating-self-signed-certificate)。例如,创建下面这样的配置文件(需要根据你的网站/app名做一些修改):

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = dev.mergebot.com
DNS.2 = dev.mergebot.com.192.168.1.19.xip.io

最后就是用CSR文件、CA private key 、CA根证书和刚才创建的配置文件,执行以下命令生成证书(用自己的CA签名):

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

 

openssl x509 -req -in dev.mergebot.com.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial 
-out dev.mergebot.com.crt -days 1825 -sha256 -extfile dev.mergebot.com.ext

提示输入CA private key的密码,输入之后,就得到web服务的证书CRT文件了。

四、把CRT证书文件部署至Linux服务器

把CRT证书文件部署到web服务器有很多种方法,操作不大相同,这里介绍:1)如何把CRT部署到Nginx上;2)把CRT整合到Spring Boot项目中。这两个方法应该满足大多数项目的需要了。另外,独立部署的Tomcat服务器应该也支持配置CRT证书,可以自行搜索资料学习。

1)CRT部署到Nginx服务器

让web服务器支持https需要安装Nginx,这里假设nginx服务已经部署好了。打开nginx的配置文件(例如/etc/nginx/sites-available/yoursite.com),找到server段,增加以下指令:

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /crt文件路径/;
ssl_certificate_key /web服务privateKey文件路径;

修改完nginx配置文件之后,再通过以下命令重启nginx即可实现https!

sudo service nginx reload

2)CRT部署到Spring Boot项目

把CRT集成到Spring Boot项目非常简单(主要原因是Spring Boot太强了),只需要在项目配置文件(例如application.properties)中修改名为"server.ssl.***"的属性即可,例如:

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

Spring Boot中与SSL相关的配置

通过配置文件支持https之后,原来的http访问方式就不再支持了。如果还需要支持http的访问方式,让http跳转到https,那么还需要在Spring中部署以下代码:

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

让 http自动跳转至https的代码

权威讲解建议参考SpringBoot官方文档
https://docs.spring.io/spring-boot/docs/2.1.8.RELEASE/reference/html/howto-embedded-web-servers.html#howto-configure-ssl

这样,https服务就搭建起来了。

现在你学会如何把http服务升级到https了吧?有没有试着搭建一下自己的CA(只需要2条命令)?本文所述方法有什么缺点吗?有更简单的方法吗?欢迎留言。

参考资料:

https://deliciousbrains.com/https-locally-without-browser-privacy-errors/
https://spinupwp.com/hosting-wordPress/ target=_blank class=infotextkey>WordPress-yourself-ssl-spdy/
https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/
https://zhuanlan.zhihu.com/p/31385073
https://blog.csdn.net/l4642247/article/details/81631770

以上分析希望对您的工作和面试有帮助。如果对互联网编程技术、Java、Spring、Android、C/C++、Linux、个性化推荐、Community Detection、machine Learning、Deep Learning、Data Mining、Gnuplot、LaTeX等技术感兴趣的话,欢迎关注本公众号。



Tags:https   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1. 前言本文主要讲解如何在Linux上使用tinyproxy搭建HTTP/HTTPS代理器。tinyproxy是一个HTTP/HTTPS代理。它是轻量级的、快速的、非常容易配置的,而且是一个开源的代理服务。...【详细内容】
2021-12-08  Tags: https  点击:(16)  评论:(0)  加入收藏
由于https 使用了 TLS/SSL 加密条件,我们无法直接在wireshark的中读取到数据内容,我们先看一下正常的http包的内容。可以直接读取到http的header 和body。 但如果是https 则不...【详细内容】
2021-12-01  Tags: https  点击:(29)  评论:(0)  加入收藏
这段时间毕竟也是 “金九银十” 的面试的黄金季节,阿粉当然也想去面试,但是因为自身受限,所以只能采访一下出去面试的同学们都问了什么内容,其中有一个,阿粉觉得有必要给大家分享...【详细内容】
2021-11-05  Tags: https  点击:(45)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  Tags: https  点击:(44)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  Tags: https  点击:(124)  评论:(0)  加入收藏
随着互联网安全越来越被重视,几乎所有的大网站都已经默认启用了https协议,浏览器输入http网址也会自动跳转到https,比如百度、腾讯、搜狗、谷歌等等。简单来说就是https协议数...【详细内容】
2021-09-06  Tags: https  点击:(76)  评论:(0)  加入收藏
为什么要优化 Ngin HTTPS 延迟Nginx 常作为最常见的服务器,常被用作负载均衡 (Load Balancer)、反向代理 (Reverse Proxy),以及网关 (Gateway) 等等。一个配置得当的 Nginx 服...【详细内容】
2021-08-11  Tags: https  点击:(53)  评论:(0)  加入收藏
我们日常用https访问网站的时候,和网站交互的数据是加密的,所用的协议就是SSL/TLS。所以即使我们截获了这些数据包,我们也不能看到加密的内容。比如我们随便打开百度的网址,用wi...【详细内容】
2021-07-16  Tags: https  点击:(127)  评论:(0)  加入收藏
1. 实验说明:前面的章节我们已经简单学习了windows server2019上如何搭建web服务器的,有的同学可能在上网的过程中会发现有些域名是使用的http访问而有的域名则是使用https加...【详细内容】
2021-07-07  Tags: https  点击:(147)  评论:(0)  加入收藏
说明最近项目上遇到一些https的问题,需要在tomcat里面测试一下如何开启https协议访问网站,在网上查了一些资料,自己也试了很多次,终于成功搞定了,下面跟大家分享一下我的一点经验...【详细内容】
2021-04-20  Tags: https  点击:(162)  评论:(0)  加入收藏
▌简易百科推荐
今天我们来聊一下北京地区的《ICP经营许可证》有多好办,现在的互联网上提供的商机越来越多,增值电信业务十分火爆,企业通过互联网突破地域的限制,把公司产品卖到更远的地方,同时...【详细内容】
2021-12-17  梦想理应飞翔Yy    Tags:《ICP经营许可证》   点击:(12)  评论:(0)  加入收藏
转自: https://blog.kermsite.com/p/blog-intro/由于格式问题,部分链接、表格可能会失效,若失效请访问原文此专题将详细介绍如何从零开始搭建一个个人博客。Dec 01, 2021阅读时...【详细内容】
2021-12-17  LaLiLi    Tags:个人博客   点击:(6)  评论:(0)  加入收藏
SP证是第二类增值电信业务经营许可证的简称。分为全网SP证和地网SP证。申请经营许可证是在工信部申请,全网SP经营许可证的有效期是5年,全网SP许可证在工信部办理全网SP续期,地...【详细内容】
2021-11-01  s陳述    Tags:sp证书   点击:(38)  评论:(0)  加入收藏
现在还有许多人不知道EDI许可证是什么东西今天我就来给大家讲解一下.EDI许可证就是一种增值电信业务经营许可证。是针对在线数据处理和交易处理业务需求的专业资格证书。 《...【详细内容】
2021-10-28  soberXx    Tags:edi许可证   点击:(75)  评论:(0)  加入收藏
元素的化学概念,如周期表中的化学元素,一切物质都是由元素构成的。对程序员而言,网站建设制作就是代码构成网站。企业网站设计者也收集了各种各样的元素,但并非所有元素都需要运...【详细内容】
2021-10-26  南宁云尚网络    Tags:企业网站   点击:(39)  评论:(0)  加入收藏
在运营网站的过程中,有一件不可忽略的事情。那就是网站上线之前需要完成 ICP 备案。说到这里,很多朋友就提出疑问了~· 什么是 ICP 备案呢?· ICP 备案需要哪些材...【详细内容】
2021-10-22  启测云    Tags:ICP备案   点击:(45)  评论:(0)  加入收藏
最近有朋友问我,我公司有外资就不能申请ICP许可证了么?外资的定义是什么?其实是可以的,但有一个特定条件必须满足,外资公司是指公司有外资股东,比如香港、加拿大、美国、韩国等等,...【详细内容】
2021-10-21  小白速看Z    Tags:ICP   点击:(51)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  我是FEIYA    Tags:https   点击:(44)  评论:(0)  加入收藏
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14    51CTO  Tags:Loki日志   点击:(97)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  小李子说程序    Tags:HTTPS证书   点击:(124)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条