网站搭建 -- 部署Https 证书 缺少 Root CA Certificate

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

测试网站

我们在搭建web站点时,为了安全,现在都要使用SSL证书。

一个好用的测试网站可以检测你的SSL配置是否正确。

https://www.geocerts.com/ssl-checker

该网站可以自定义检测的端口(大部分检测网站都只能使用默认端口443)

 检测结果如下

可以看到最后一栏,Certificate Chain Complete  检测的是证书链是否完整这里又警告。

正确配置的结果是这样的:

一般情况下,若是web站点配置的证书链不完整,大部分浏览器访问都没有问题。

但是有些浏览器会有警告提示,需要手动点击确认,该浏览器在后续访问站点的时候才不会告警。但是对于一些网站之间的调用,如web小游戏,出现这个问题就会导致游戏无法正常加载,因为需要手动确认,而这个确认界面有时候又没有显示出来。

比如我的站点是nginx放置前端资源,glassfish部署后端程序,所以在这两个地方都需要正确安装包含完整根证书的证书链。

安装证书

现在某宝上购买泛域名的证书十分方便,卖家发给的文件包含几种web站点的配,他们已经分好类,十分方便。

[root@localhost ssl]# tree .
.
├── Apache
│   ├── CAChains.crt
│   ├── START-example-com.crt
│   └── START-example-com.key
├── CDN
│   ├── [1]START-example-com.crt
│   ├── [2]CAChains.crt
│   └── START-example-com.key
├── IIS
│   ├── CAChains.crt
│   └── START-example-com.pfx
└── Nginx
    ├── START-example-com.key
    └── START-example-com.pem

其中

  • CACahins.crt是证书链(即除开域名证书的所有上级证书,包括根证书和中间授权商的证书。)
  • START-example-com.crt是被授权域名*.example.com的域名证书。
  • START-example-com.key是私钥。

 

这些文件大部分以文本形式存在:

Apache/CAChains.crt

-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
...
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFdzCCBF+gAwIBAgIQE+oocFv07O0MNmMJgGFDNjANBgkqhkiG9w0BAQwFADBv
...
0fKtirOMxyHNwu8=
-----END CERTIFICATE-----

Apache/START-aiwingaming-com.crt

-----BEGIN CERTIFICATE-----
MIIGBDCCBOygAwIBAgIQSI+LGG8Px7WUn1ZuXNahwjANBgkqhkiG9w0BAQsFADCB
...
nKdXTAI78B8=
-----END CERTIFICATE-----

Apache/START-example-com.key

-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyHYcExMhnxL2q
...
6RwyQyYTO+KceoYYYA8aKvdX
-----END PRIVATE KEY-----

CDN/[1]START-example-com.crt

-----BEGIN CERTIFICATE-----
MIIGBDCCBOygAwIBAgIQSI+LGG8Px7WUn1ZuXNahwjANBgkqhkiG9w0BAQsFADCB
...
nKdXTAI78B8=
-----END CERTIFICATE-----

CDN/[2]CAChains.crt

-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
...
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFdzCCBF+gAwIBAgIQE+oocFv07O0MNmMJgGFDNjANBgkqhkiG9w0BAQwFADBv
...
0fKtirOMxyHNwu8=
-----END CERTIFICATE-----

CDN/START-example-com.key

-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyHYcExMhnxL2q
...
6RwyQyYTO+KceoYYYA8aKvdX
-----END PRIVATE KEY-----

IIS/CAChains.crt

-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
...
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFdzCCBF+gAwIBAgIQE+oocFv07O0MNmMJgGFDNjANBgkqhkiG9w0BAQwFADBv
...
0fKtirOMxyHNwu8=
-----END CERTIFICATE-----

IIS/START-example-com.pfx

pfx不是文本文件就不显示了,一般会设置密码的,且卖家会告诉你。

Nginx/START-example-com.key

-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyHYcExMhnxL2q
...
6RwyQyYTO+KceoYYYA8aKvdX
-----END PRIVATE KEY-----

Nginx/START-example-com.pem

-----BEGIN CERTIFICATE-----
MIIGBDCCBOygAwIBAgIQSI+LGG8Px7WUn1ZuXNahwjANBgkqhkiG9w0BAQsFADCB
...
nKdXTAI78B8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
...
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFdzCCBF+gAwIBAgIQE+oocFv07O0MNmMJgGFDNjANBgkqhkiG9w0BAQwFADBv
...
0fKtirOMxyHNwu8=
-----END CERTIFICATE-----

由上可以看到:

  • key都是一样的;
  • CAChains也都是一样的;
  • Apache/START-example-com.crt 和CDN/[1]START-example-com.crt是一样的,
  • 而START-example-com.pem只不过是把CAChains.crt和START-example-com.crt的内容合并起来。

其实后缀crt,pem都不重要,主要是看内容。

有些人喜欢把CAChains和域名证书合起来命名为bundle之类的。

 

对于nginx

一般是这样配置的,关键部分的nginx.conf内容如下

    server {
        listen 443 ssl;
        server_name test.example.com;
        ssl_certificate example.com.crt;
        ssl_certificate_key example.com.key;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;
        location / {
            root   /opt/Resources;
            index  index.html index.htm;
        }
   }

然后吧crt和key文件放在nginx.conf同目录下即可,比较方便。

对于glassfish

因为卖家没有整理对应的文件,只有自己来弄下。

在glassfish中,新建域之后,其目录config下的domain.xml是关于该域的主要配置文件。可以看到

keyStore 和 trustStore 分别对应 config目录下的keystore.jks 和 cacerts.jks 文件。

 

<jvm-options>-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks</jvm-options>
<jvm-options>-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks</jvm-options>

 

如果给你服务器签名的CA的根证书没有默认包含在你的 trust store 里面,你必须手动将根证书( root certificate)安装到 trust store里面。

1.导入一个根证书

执行如下命令

keytool  -import  -trustcacerts \
         -alias certAlias  \
         -file certFile  \
         -keystore trustStoreFile
  • certFile 就是crt证书,包含完整证书链的文件(如nginx的pem,或者自己合并的bundle文件)。
  • certAlias 就是一个代表该证书的别名(自己定义),glassfish有个别名是叫 s1as 就是常用来定义自己添加的证书。
  • trustStoreFile  在glassfish里面就是 yourdomainname/config/cacerts.jks 文件,

2.执行该命令时,提示符会询问你是否相信这个证书,你回答yes即可。

Trust this certificate? [no]:  yes
Certificate was added to keystore

3.确认domain.xml配置文件里有如下配置

<jvm-options>-Djavax.net.ssl.trustStore=trustStoreFile</jvm-options>

 

 

注:

我犯的错误就是在配置nginx和glassfish时,只用了域名证书,没有用完整的证书链(bundle),才出现了前面证书链不完整的错误。其实,刚开始接触证书,对于有些概念不是很清楚。有空可以看看一些相关书籍,不用都懂,看了大部分内容就可以了。

《HTTPS权威指南 在服务器和WEB应用上部署SSL TLS和PKL》

《OpenSSL Cookbook-OpenSSL攻略-中文版》

《Openssl编程-赵春平-中文版》

《CDN技术详解》

 

参考:

Oracle GlassFish Message Queue 4.4.2 Administration Guide

https://docs.oracle.com/cd/E19798-01/821-1794/aeoqc/index.html

深入解析Microsoft Root CA 2011:从PKI原理到证书错误排查实战 公钥基础设施(PKI)是现代网络安全通信的基石,它通过非对称加密和数字证书建立信任链。其核心原理在于由受信的根证书颁发机构(Root CA)签发中间CA证书,再由中间CA为终端实体(如网站服务器)颁发证书,形成层级化的信任验证体系。这一机制的技术价值在于为HTTPS、邮件加密、代码签名等场景提供了身份认证和数据传输的安全性保障。在企业内网、安全测试及云服务等应用场景中,由微软发布的Microsoft Root CA 2011作为广泛预置的信任锚点,其状态直接影响着证书链的验证。当出现‘NET::ERR_CE 阅读详情

相关推荐

openEuler系统下自建CAHTTPS证书签发全流程实践

公钥基础设施(PKI)是现代网络安全通信的基石,它通过非对称加密和数字证书机制,构建了网络实体间的信任体系。其核心原理是利用证书颁发机构(CA)的层级信任链,为服务器和客户端提供身份验证与加密传输保障。这一技术在保障数据传输机密性、完整性和身份真实性方面具有重要价值,广泛应用于企业内网、金融系统、政务平台等对安全可控性要求极高的场景。特别是在内部开发测试环境、隔离网络或需要完全自主证书管理的体系中,自建CA成为关键需求。本文将以openEuler操作系统为平台,结合OpenSSL工具,深入解析自建根CA、配

weixin_30614109的博客 317

解决 Nginx Let's Encrypt HTTPS 证书 错误: 服务器缺少中间证书

前言 期初是由于在ios系统出现https连接ssl握手时间过长 经过调查有网友说是ssl中间证书缺失 时间长 和 中间证书缺失 这两点是否存在关联目前还有待考证 不过目前发现 Nginx 配 Let's Encrypt 证书的确存在中间证书缺失问题 本文介绍如何解决这一问题 这里证书用的是 Let's Encrypt 通配符证书 服务端 Nginx 1.16.0 调查 首先检查...

owenzhang的博客 3880

根证书root certificate

在和领域,)是屬於根(CA)的,是在中,的起點。证书颁发机构的角色有如现实世界中的,保證網路世界中電子證書持有人的。具體作法是透過,利用為多個客戶签发多个不同的,形成一个以其根证书為顶层的,在此中所有下層證書都会因為根证书可被信赖而继承信任基礎。根證書在中作為信任錨的起點角色根證書沒有上層機構再為其本身作數位簽章,所以都是自簽證書。许多(例如)会預先安裝可被信任的根证书,這代表用戶授權了應用軟件代為審核哪些根憑證機構屬於可靠,例如是公認可靠的政府機關(如)、專職機構(如)等。應用軟件在。

weixin_40191861的博客 1564

根证书root certificate)是屬於根证书颁发机构(CA)的公钥证书

在密码学和领域,)是屬於根(CA)的,是在中,的起點。证书颁发机构的角色有如现实世界中的公證行,保證網路世界中電子證書持有人的身份。具體作法是透過,利用數位簽章為多個客戶签发多个不同的,形成一个以其根证书為顶层的樹狀結構,在此传递关系中所有下層證書都会因為根证书可被信赖而继承信任基礎。根證書在中作為信任錨的起點角色根證書沒有上層機構再為其本身作數位簽章,所以都是。许多(例如。

weixin_40191861的博客 3198

ROOT证书CA证书和使用CA签发的X.509证书

ROOT证书CA证书和使用CA签发的X.509证书 简介 概念 使用Bouncy Castle 生成一个签名证书 验证证书的签名 使用来自Oracle的证书支持 加载Keystore文件 验证签名是否合法 验证Trust Chain 结尾 简介 日常开发中,我们程序员不怎么会接触证书相关的问题,对信息安全领域相关的内容知之甚少。因为平时主要实现的业务很少要直接面向底层的通信,也就很少关注这证书这样的知识。在一般情况下,我们仅仅只是在使用一些高层的依赖中会引入证书、加密相关的依赖包,比如: <!

wusj的博客 2583

Jmeter之root ca certificate 问题

在配置jmeter http代理服务器时,本机及手机都已经安装了root ca certificate,为什么启动的时候还是提示我缺少证书呢 转载于:https://www.cnblogs.com/waitingtmou/p/6184406.html...

weixin_34138056的博客 882

centos7 生成ssl证书搭建https地址

一、HTTPS简介 1.https简介 HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据 2.https协议原理 首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,

weixin_43784341的博客 2128

Microsoft Root CA 2011证书详解:安全认证的核心

Microsoft Root CA 2011证书是数字安全的重要组成部分,通过一个简单的网页应用,用户可以轻松查看和验证其关键信息。无论是企业管理员还是普通用户,了解证书的作用和验证方法都能帮助提升安全意识。如果你对这类技术感兴趣,不妨尝试自己动手实现一下,或者直接在InsCode(快马)平台上体验快速开发的乐趣!

YellowSun24的博客 576

Ubuntu 20.04 搭建生产级私有CARoot+Intermediate三级架构实战

证书颁发机构(CA)是公钥基础设施(PKI)的核心组件,其原理基于X.509标准与数字签名机制,通过可信根证书建立终端实体间的加密信任链。构建私有CA的技术价值在于实现内网HTTPS、设备双向认证、Kubernetes TLS通信等场景的自主可控与合规安全。相比Let’s Encrypt等公共CA,私有CA支持内网域名、自定义有效期、细粒度吊销策略及离线根密钥保护,尤其适用于金融、IoT和DevSecOps环境。本文聚焦Ubuntu 20.04平台,结合easy-rsa工具链,详解Root CA与Inter

weixin_34239169的博客 618

商业CA SSL证书部署全链路解析:CSR生成到Nginx加载的硬核实践

SSL证书HTTPS安全通信的基础,其本质是基于X.509标准构建的公钥信任链。理解证书签名算法、私钥匹配原理与证书链验证机制,是实现可靠加密的前提。技术价值在于保障传输机密性、服务端身份真实性及前向安全性;典型应用场景包括企业级Web服务、API网关、双栈IPv4/IPv6服务器等对合规性与可控性要求严苛的生产环境。而商业CA证书部署区别于Let’s Encrypt的核心难点,在于全程需人工管控密钥生命周期与证书链编排——尤其体现在CSR中Subject Alternative Name(SAN)的强制

a2850363633的博客 412

内网HTTPS实战:自签名证书与私有CA搭建全指南

HTTPS作为保障网络通信安全的基石,通过TLS/SSL协议对传输数据进行加密和身份验证,防止窃听与篡改。其核心原理基于非对称加密和数字证书体系,确保客户端与服务端之间的安全握手。在公网环境中,HTTPS已是网站标配,而在内网环境,其技术价值同样重要——它能有效防范内网监听、中间人攻击,并满足数据机密性与完整性要求。尤其在处理敏感数据、满足合规审计或构建零信任网络时,内网HTTPS不可或缺。本文聚焦于**自签名证书**和**私有CA**两种经济高效的方案,详解从原理到在Nginx、Tomcat、IIS等主流

452

内网HTTPS部署指南:私有CA搭建与Nginx/Tomcat/IIS配置实战

HTTPS(超文本传输安全协议)通过TLS/SSL加密层为HTTP通信提供安全保障,其核心原理基于非对称加密与证书信任链机制。这项技术不仅保护数据传输的机密性与完整性,更是现代网络安全架构的基石,对于满足等保合规、防范中间人攻击至关重要。在实际工程中,尤其是在企业内网环境,为Web服务部署HTTPS能够有效保护敏感业务数据,如财务、人事及研发系统信息。通过搭建私有证书颁发机构(CA),运维人员可以为内网域名或IP签发受信证书,从而构建一个可控的加密通信环境。本指南将详细阐述如何利用OpenSSL工具创建私有

weixin_33976072的博客 341

PEM格式证书 = 域名证书.crt + 根证书(root_bundle).crt 含义解析

部署 HTTPS 时,很多朋友可能都遇到过.crt等证书文件。尤其是在使用 Apache、Nginx 或其他 Web 服务配置 SSL 时,往往需要你提供一个“PEM 格式”的证书文件。那究竟什么是 PEM 格式证书?它为什么需要多个.crt文件组合?本文将带你快速搞懂这些概念。PEM 格式证书本质上是一种纯文本编码方式,通常由:域名证书.crt(站点专属)根证书(中间+根CA) 拼接而成,用于构建安全信任链,保证浏览器和客户端对服务器身份的信任。

gs80140的专栏 2630

基于mkcert与Nginx搭建内网HTTPS服务:私有CA实战指南

HTTPS作为保障网络通信安全与完整性的核心协议,其原理基于TLS/SSL协议,通过非对称加密、对称加密与数字证书实现身份认证与数据加密。在开发测试与内网环境中,部署HTTPS面临公网证书不可用、自签名证书不被信任等挑战。mkcert工具通过创建本地受信任的私有证书颁发机构(CA),自动化解决了内网证书的签发与信任问题,极大提升了开发体验与部署效率。结合Nginx这一高性能Web服务器与反向代理,开发者可以快速为内网Web应用、API服务构建安全的HTTPS终端,实现通信加密、负载均衡与统一入口管理。本文聚

dianjiaxian1205的博客 342

OpenSSL私有CA搭建与Nginx HTTPS配置全流程指南

数字证书HTTPS是构建安全网络通信的基石,其核心依赖于公钥基础设施(PKI)建立的信任链。PKI通过证书颁发机构(CA)对服务器身份进行验证,确保数据传输的机密性与完整性。在公共互联网,我们依赖全球受信的公共CA;而在企业内部开发、测试或预发布环境中,自建私有CA则展现出独特的技术价值——它实现了证书生命周期的完全自主可控,支持为内部域名、IP地址灵活签发证书,且成本为零。OpenSSL作为功能强大的密码学工具包,是搭建私有CA的瑞士军刀,结合Nginx这一高性能Web服务器,能够为内部服务快速构建安全

weixin_30292843的博客 346

细说 CA证书

转自 https://linux.cn/article-7289-1.html CACatificate Authority,它的作用就是提供证书(即服务器证书,由域名、公司信息、序列号和签名信息组成)加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。任何个体/组织都可以扮演 CA 的角色,只不过难以得到客户端的信任,能够受浏览器默认信任的 CA 大厂商有很多

skykingf的专栏 3万+

Windows Server 2016 企业根CA搭建与IIS HTTPS配置全攻略

HTTPS作为保障网络通信安全的基础协议,其核心在于通过SSL/TLS加密实现数据传输的机密性与完整性。其工作原理依赖于公钥基础设施(PKI)体系,由受信任的证书颁发机构(CA)签发数字证书来验证服务器身份。自建企业CA在内网环境中具有独特的技术价值,它允许为内网域名、IP地址及大量设备签发完全自定义策略的证书,是实现内网服务全面HTTPS化、构建统一身份认证体系的关键。相较于公网CA,自建CA在管理灵活性与成本控制上优势显著,尤其适用于Active Directory域环境。本文将以Windows Ser

316

HTTPS证书选择本质是信任模型决策:Let’s Encrypt、商业CA、私有CA与自签名对比

SSL/TLS证书的核心并非加密技术本身,而是背后所承载的数字信任模型。从基础的域名验证(DV)到组织验证(OV)、扩展验证(EV),不同证书类型对应着差异化的身份核验强度、责任归属机制与法律效力。Let’s Encrypt以自动化和免费重构了公网HTTPS的信任分发,但其90天有效期与无组织信息设计,天然适配轻量级Web服务而非金融合规场景;商业证书颁发机构则通过人工审核、保险赔付与SLA保障,将信任升级为可追溯的法律责任;私有CA将信任根移入内网,支撑微服务mTLS与IoT设备安全通信;而自签名证书仅适

weixin_30628801的博客 342
上一篇: 数据格式 -- JSON
下一篇: 如何在Tomcat中做TLS客户端认证
庚庚911
博客等级 码龄16年 175粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值