当前位置: 首页 > ds >正文

内网环境自签名超长期HTTPS证书,并在Chrome中显示为安全证书

 环境说明:本环境在AD域内(方便使用组策略安装证书),内网环境,Chrome为当前最新版130+,如果没有AD域的,就得想办法给所有电脑安装证书,比如说使用桌管等软件下发Bat。

用到的工具有:Openssl、域组策略

先决条件:

生成证书的终端需已安装OpenSSL,安装过程如下

1 下载 OpenSSL 安装包

https://slproweb.com/products/Win32OpenSSL.html

根据你的系统选择版本: Windows 64 位系统 ➜ 选择 Win64 OpenSSL

Windows 32 位系统 ➜ 选择 Win32 OpenSSL

通常选择: Win64 OpenSSL v3.x Light(较小安装包) 或  Win64 OpenSSL v3.x(完整版)

2 运行安装程序 下载后双击 .exe 安装文件运行。 (安装时提示找不到 Visual C++ redistributables? 官网下载:https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist )

安装路径可以使用默认路径,选“将 OpenSSL 的 bin 目录添加到系统 PATH”选项

3 验证是否安装成功 打开命令行(cmd)或 PowerShell,输入:openssl version

4 安装后提示找不到 openssl 命令

可能是系统没有添加 OpenSSL/bin 到环境变量。

你可以手动设置环境变量: 打开系统环境变量设置: 控制面板 ➜ 系统 ➜ 高级系统设置 ➜ 环境变量 在系统变量中找到 Path,添加安装路径如C:\Program Files\OpenSSL-Win64\bin

确认后重新打开终端即可。

操作步骤:

一、生成自签名证书

1. 进入CMD,找一个或者新建一个目录,用来放置生成的文件

mkdir、cd等,具体命令略。

2. 生成私钥

openssl genrsa -out server.key 2048

3. 生成请求文件

openssl req -new -key server.key -out server.csr -sha256

4. 在当前目录创建一个san.cnf文本文件,写入下列内容,其中三个www.test.com,要替换为你要签名的完整域名,此步骤不可省略,若省略,Chrome会报告缺少SAN字段,证书不安全。

[req]distinguished_name=req_distinguished_namereq_extensions=req_extprompt=no[req_distinguished_name]CN=www.test.com[req_ext]subjectAltName=DNS:www.test.com,DNS:www.test.com

CMD执行命令,其中7300是有效期天数,即20年,chrome要求使用安全等级高一些的哈希算法,所以签名参数用的sha256,如果不指定默认使用sha1,对于sha1,Chrome会报不安全。

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout server.key -out server.crt -config san.cnf -extensions req_ext -sha256

5. 验证证书是否正确

openssl x509 -in server.crt -noout -text

到这一步就已经有了公钥、私钥文件了,可以正常使用了。

6. (附)生成PFX证书交换文件

PFX 是微软和很多企业系统(比如 IIS、Windows AD、Azure、Java keystore)用来部署证书的标准格式,适合一次性导入所有相关内容。

执行CMD命令,通过刚刚公私钥文件来生成PFX文件。

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

二、组策略信任证书(如果没有AD域的,就想办法下发这个证书给终端并且安装)

1. 配置所有计算机自动信任根证书颁发机构证书

在任意一台DC上进入组策略管理,推荐在“Default Domain Policy”进行配置,组策略路径如下(例图),进入之后,右键导入,将刚刚的server.crt导入进去就行了。

2. 终端同步组策略

gpupdate /force

3. 完成

这个时候,用户打开装载了这个证书的网站,只要域名和证书里的域名一致,Chrome就会显示安全的证书了

如果还是提示不安全:

①使用无痕浏览模式,或清理浏览器缓存重新进入网站

②可以通过浏览器F12 - 安全(Security)来查看不安全的原因

三、(附)自行测试证书安全

如果只是在测试环境确定一下这种方式是否可行,可以用一个简单的python程序来模拟网站,装载证书,然后在C:\windows\system32\drivers\etc\host这里,改一下host,把目标域名指向127.0.0.1,运行这个python程序,然后直接在浏览器直接打开https://目标域名:4443,就能访问本机这个demo,来测试证书是否可用。

from http.server import HTTPServer, SimpleHTTPRequestHandler
import ssl
port = 4443
httpd = HTTPServer(('127.0.0.1', port), SimpleHTTPRequestHandler)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile='server.crt', keyfile='server.key')  # 正确加载证书
httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
print(f"Serving on https://localhost:{port}")
httpd.serve_forever()

http://www.xdnf.cn/news/15558.html

相关文章:

  • C#自定义控件
  • 【Python】基础语法
  • 单向链表、双向链表、栈、队列复习(7.14)
  • LSV负载均衡
  • Usage of standard library is restricted (arkts-limited-stdlib) <ArkTSCheck>
  • 防火墙技术概述
  • Java行为型模式---模板方法模式
  • 【html基本界面】
  • 【视频格式转换】.264格式转为mp4格式
  • 7.15 窗口函数 | 二分 | 位运算
  • 互斥锁与同步锁
  • SAP-ABAP:SAP库存管理核心增强:IF_EX_MB_DOCUMENT_BADI 深度解析
  • AI驱动编程范式革命:传统开发与智能开发的全维度对比分析
  • 【人工智能】通过 Dify 构建聊天助手
  • 【t检验】用奶茶店排队案例解释
  • LangChain 和 Dify 是什么
  • 基于51单片机的贪吃蛇游戏Protues仿真设计
  • 数据分类分级和重要数据标准解读
  • 文献查找任务及其方法
  • 当前(2024-07-14)视频插帧(VFI)方向的 SOTA 基本被三篇顶会工作占据,按“精度-速度-感知质量”三条线总结如下,供你快速定位最新范式
  • 计算机毕业设计Java轩辕购物商城管理系统 基于 SpringBoot 的轩辕电商商城管理系统 Java 轩辕购物平台管理系统设计与实现
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘collections’问题
  • 来时路,零帧起手到Oracle大师
  • 大模型安全建设:破误区、识风险、筑防线20250714
  • 体验RAG GitHub/wow-rag
  • HTML 文本格式化标签
  • Redis7持久化
  • TextIn:大学生的文档全能助手,让学习效率飙升
  • 【JAVA】监听windows中鼠标侧面键的按钮按下事件
  • React之旅-06 Ref