自制Https证书并在Spring Boot和Nginx中使用(转)

简介: 白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环境中服务器端的配置。

白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环境中服务器端的配置。

如果你还没有读过白话Https,我强烈建议你先去读一下。按照白话Https中的介绍,Https协议涉及到的主体主要有三个:客户端、服务端、以及CA机构。如下图所示:

Https Role

在白话Https一文中,曾介绍一个服务要申请使用Https的流程。本文所介绍的流程,针对自制Https证书,更多的面向测试场景,当然了,有些网站,比如像12306这样的,也会自制根证书要求用户安装。既然是要DIY,当然也要分别在三个主体上做工作。

证书颁发机构

  • CA机构私钥
openssl genrsa -out ca.key 2048
  • CA证书
openssl req -x509 -new -key ca.key -out ca.crt

注意生成过程中需要输入一些CA机构的信息

服务端

  • 生成服务端私钥
openssl genrsa -out server.key 2048
  • 生成服务端证书请求文件
openssl req -new -key server.key -out server.csr

注意生成过程中需要你输入一些服务端信息

  • 使用CA证书生成服务端证书
openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt

关于sha256,默认使用的是sha1,在新版本的chrome中会被认为是不安全的,因为使用了过时的加密算法。

  • 打包服务端的资料为pkcs12格式(非必要,只是换一种格式存储上一步生成的证书)
openssl pkcs12 -export -in server.crt -inkey server.key -out server.pkcs12

生成过程中,需要创建访问密码,请记录下来。

  • 生成服务端的keystore(.jks文件, 非必要,Java程序通常使用该格式的证书)
keytool -importkeystore -srckeystore server.pkcs12 -destkeystore server.jks -srcstoretype pkcs12

生成过程中,需要创建访问密码,请记录下来。

  • 把ca证书放到keystore中(非必要)
keytool -importcert -keystore server.jks -file ca.crt

客户端

  • 导入根证书ca.crt到浏览器受信任的根证书颁发机构列表中

不管通过什么浏览器吧,总之你要找到下面这个页面,点击导入,将上面生成的CA机构的ca.crt导入到收信任的根证书颁发机构列表中。

import ca.crt

注意,收信任的根证书颁发机构列表是操作系统级的,不管通过哪个浏览器进入配置,都是只需要配置一次,再使用其它浏览器时,无需重复配置。

Spring Boot

Spring Boot为web容器提供了统一的抽象配置,不管你使用的是Tomcat是Jetty还是其它web容器,如果要在Spring Boot中使用Https,你只需要在你的配置类中,添加如下代码,注册一个EmbeddedServletContainerCustomizer Bean即可。

需要用到上面生成的Server.jks文件。

@Configuration
public class WebConfig { @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return new EmbeddedServletContainerCustomizer() { @Override public void customize(ConfigurableEmbeddedServletContainer container) { Ssl ssl = new Ssl(); ssl.setKeyStore("Server.jks"); ssl.setKeyStorePassword("passwd"); container.setSsl(ssl); container.setPort(8443); } }; } }

Nginx

如果要在Nginx中使用Https,需要用到上面生成的Server.crt,Server.key。

server {
    listen      127.0.0.1:443 ssl;
    
    ssl on; ssl_certificate Server.crt; ssl_certificate_key Server.key; #省略无关配置... }

总结

  1. crt、jks、pkcs12都是用来保存证书的不同格式,不同的服务器软件可能会使用不同格式的证书文件。
  2. OpenSSl、Keytool都是可以用来生成Https证书的工具软件,其中OpenSSl功能更多更复杂,Keytool随JDK安装而安装。
  3. 证书的格式是多样的,生成证书的软件工具有很多,不同服务器程序的配置方法不尽相同,要达成目的有很多种方法。所以,重要的是弄懂原理,而不是按照教程一步一步敲命令。
  4. 跟白话Https一样,本文仍然没有介绍服务端怎么验证客户端,但如果你弄懂了原理,我想你已经可以自己去实现了

http://www.cnblogs.com/xinzhao/p/4950689.html

相关文章
|
3月前
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
4月前
|
运维 搜索推荐 安全
HTTPS 证书自动化运维:基础知识与重要性
随着互联网发展,HTTPS 成为保护网站和用户数据安全的标准协议。HTTPS 证书(SSL/TLS)验证网站身份并加密通信,分为 DV、OV 和 EV 三种类型,确保数据传输安全。它不仅提高安全性、增强用户信任,还能提升搜索引擎排名。手动管理证书繁琐易错,自动化运维工具如 Let`s Encrypt 和 Certbot 可简化流程,减少错误,提高效率。文章介绍了 HTTPS 证书的基础知识、重要性及自动化运维的概念。
|
24天前
|
安全 算法 数据建模
HTTPS证书类型和品牌一览
HTTPS证书(SSL证书)是保障网站数据传输安全与身份可信认证的重要工具,适用于电商、企业官网等各类平台。证书主要分为DV(域名验证)、OV(企业验证)、EV(扩展验证)三种安全级别,以及单域名、通配符、多域名等不同覆盖类型。品牌方面,既有高性价比的国产锐安信、CFCA,也有国际知名的Sectigo、Digicert。
|
4月前
|
监控 运维
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
本文介绍如何设置和查看域名或证书监控。步骤1:根据证书状态选择新增域名或证书监控,线上部署推荐域名监控,未部署选择证书监控。步骤2:查询监控记录详情。步骤3:在详情页查看每日定时检测结果或手动测试。
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
|
4月前
|
Linux 持续交付 调度
HTTPS 证书自动化运维:https证书管理系统-自动化部署
本指南介绍如何部署Linux服务器节点。首先复制生成的Linux脚本命令,然后将其粘贴到目标服务器上运行。接着刷新页面查看节点记录,并点击“配置证书”选择证书以自动部署。最后,节点部署完成,后续将自动调度,无需人工干预。
HTTPS 证书自动化运维:https证书管理系统-自动化部署
|
4月前
|
运维
HTTPS 证书自动化运维:https证书管理系统之自动化签发
通过访问【https://www.lingyanspace.com】注册账户,进入证书服务菜单并新增证书。填写域名(单域名、多域名或泛域名),创建订单后添加云解析DNS记录进行质检。确认完成后可下载证书,并支持后续查看、更新和定时更新功能。证书过期前15天自动更新,需配置邮箱接收通知。
HTTPS 证书自动化运维:https证书管理系统之自动化签发
|
4月前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
167 4
|
4月前
|
机器学习/深度学习 人工智能 运维
HTTPS 证书自动化运维:展望未来发展趋势
HTTPS证书自动化运维正朝着更智能、高效和安全的方向发展。未来系统将提升自动化程度,减少人工干预,实现自动签发、续订与部署;深度集成多云平台,提供无缝管理体验;增强高级安全功能如加密算法和威胁检测;优化用户界面,降低使用门槛;支持更多操作系统,确保跨平台一致性;引入AI/ML技术,预测需求并自动解决问题;加强标准化与互操作性,促进生态系统协作。同时,系统将持续扩展功能、优化性能、支持国际化,并注重用户反馈,为全球用户提供优质的证书管理服务。
|
4月前
|
运维 监控 数据安全/隐私保护
HTTPS 证书自动化运维:HTTPS 证书管理系统之使用指南
本文详细介绍【灵燕空间HTTPS证书管理系统】(https://www.lingyanspace.com)的配置与使用,涵盖注册账户、邮箱配置及证书自动签发、监控和部署的一体化指南。通过页面顶部菜单的【视频教程】和【图文教程】,帮助用户从注册到实际应用全面掌握系统操作。最新迭代后,泛域名证书已包含根域名,无需额外申请多域名证书。
|
4月前
|
数据建模 网络安全
IP地址https证书最新申请流程步骤
确保信息准确,遵循CA指导,遇到问题可联系客服。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等