首页 > 其他分享 >使用OpenSSL生成SANs证书实操

使用OpenSSL生成SANs证书实操

时间:2024-10-30 16:43:48浏览次数:3  
标签:SANs 证书 OpenSSL fusude 实操 key zjw com Name

当初:

原来的x.509证书,生成就一行代码,非常方便:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem

然后按照提示输入机构和dns信息即可。 

然而:

最近在开发一个websocket项目时,需要使用wss协议,在机器A(win7)上调试没问题,在机器B(win10+go1.22.3)上调试,报错:

PS E:\zjw\golang\ws> go run ws/server1wss/client
2024/10/30 15:45:37 Error connecting to server: x509: certificate relies on legacy Common Name field, use SANs instead 

经查,go1.15以后的版本废弃了依赖Common Name字段的x509证书,必须使用SANs证书。SANs是Subject Alternate Names的简称,它支持添加多个域名,允许将多个域名写入同一个证书中,这样就可以保护多个域名,从而降低了运维人员的管理成本,提高了证书管理效率。

采用如下方法创建证书:

1.首先安装openssl。步骤略。

2.创建私钥:

PS E:\zjw\ca_fsd>  openssl genrsa -des3 -out fusude.com.key 2048

3. 生成CSR

PS E:\zjw\ca_fsd> openssl req -new -key fusude.com.key -out fusude.com.csr
Enter pass phrase for fusude.com.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:hebei
Locality Name (eg, city) []:shijiazhuang
Organization Name (eg, company) [Internet Widgits Pty Ltd]:fusude
Organizational Unit Name (eg, section) []:dept
Common Name (e.g. server FQDN or YOUR name) []:zjw
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:*********
An optional company name []:fusude

4. 从秘钥中删除密码(特别提示:密码要用到,另外记好!)

PS E:\zjw\ca_fsd> cp fusude.com.key fusude.com.key.org
PS E:\zjw\ca_fsd> openssl rsa -in fusude.com.key.org -out fusude.com.key

5. 为SAN证书创建config file,名字无所谓,例如叫v3.txt,内容如下。注意subjectAltName里,设置你需要的DNS Name

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:TRUE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign
subjectAltName = DNS:fusude.com, DNS:*.fusude.com
issuerAltName = issuer:copy

6. 创建自签名证书:

PS E:\zjw\ca_fsd> openssl x509 -req -in fusude.com.csr -signkey fusude.com.key -out fusude.com.crt -days 3650 -sha256 -extfile v3.txt
Signature ok
subject=C = CN, ST = hebei, L = shijiazhuang, O = fusude, OU = dept, CN = zjw, emailAddress = [email protected]
Getting Private keys
生成的文件fusude.com.crt即为我们需要的SANs证书。

7. 还可以转换为pfx或pem格式:

PS E:\zjw\ca_fsd> openssl pkcs12 -export -out fusude.com.pfx -inkey fusude.com.key -in fusude.com.crt
Enter Export Password:
Verifying - Enter Export Password:
PS E:\zjw\ca_fsd> openssl pkcs12 -export -out fusude.com.pem -inkey fusude.com.key -in fusude.com.crt Enter Export Password: Verifying - Enter Export Password:

8. 证书的使用不展开论述。感谢观看。

  

感谢Azure Lei Zhang的博客  : Azure Application Gateway (6) 使用OpenSSL创建SAN证书

 

标签:SANs,证书,OpenSSL,fusude,实操,key,zjw,com,Name
From: https://www.cnblogs.com/zjw0901/p/18516110

相关文章

  • openssl enc内部算法实现原理
    我们都知道使用命令openssl时可以使用-enc指定算法,那么具体它的实现原理是什么呢?我们通过实验来一探究竟我们新建一个my.txt里面的内容为12345678opensslenc-aes-128-cbc-inmy.txt-outmy.enc-k"mypasswd"结果会生成my.enc文件,我们用xxd命令可以看到那么这个文件是如......
  • 关于Rust使用cross进行交叉编译,openssl报错
    遇到错误详情解决:使用cross交叉编译,确保已经安装好了openssl的相关依赖,但是依然报和openssl有关的错误,此时需要在 Cargo.toml 添加openssl的依赖查看:https://github.com/sfackler/rust-openssl?tab=readme-ov-file1[dependencies]2openssl={version="0.10",feat......
  • 水仙花数c语言程序:实操解答
    水仙花数(Narcissisticnumber)是指一个三位数,其各个位上数字的立方和等于该数本身。比如153就是水仙花数,因为\(1^3+5^3+3^3=153\)。以下是一个C语言程序,用于判断一个三位数是否为水仙花数,并输出100到999范围内的所有水仙花数:```c#include<stdio.h>#include<math.h>......
  • 【干货】arima模型python代码实操演练
    以下是用Python实现ARIMA模型的代码。ARIMA(自回归积分滑动平均模型)是一种常用于时间序列数据预测的统计模型。在Python中,可以使用statsmodels库来实现ARIMA模型。安装依赖库如果还没有安装statsmodels和pandas,可以先安装:pipinstallstatsmodelspandas示例代码import......
  • 圣诞树html网页代码实操代码详解
    下面是一个简单的HTML网页代码,用于展示一个ASCII艺术风格的圣诞树,以及一些基本的样式。你可以将以下代码复制并粘贴到一个HTML文件中,然后用浏览器打开即可查看效果。```html<!DOCTYPEhtml><htmllang="zh"><head>  <metacharset="UTF-8">  <metaname="viewpor......
  • OpenSSL
    OpenSSL概述OpenSSL是一个开源的、安全传输协议实现工具,广泛应用于数据加密与解密、证书生成与管理以及其他安全性相关的任务。在现代网络安全中,OpenSSL被用于构建和维护SSL/TLS通信,确保数据在传输过程中的机密性和完整性。简单来说,OpenSSL是一个用于加解密SSL文......
  • 虚幻引擎实操(4)《原神,启动!》(切换小队角色)
     介绍 这个文章会带大家用虚幻引擎粗略的实现原()神中的一些功能,当然啦不是做一个完整的原神出来,主要面向对象为没有编程基础或者刚刚入门的同学前言好像对于大部分0基础的同学来说虚幻引擎的学习比较抽象(做游戏本身就挺抽象的,没有狠活挣不出来qwq)。比如虚幻的界面,数百个接......
  • openssl生成esxi过期证书
    1,使用openssl生成证书步骤1:生成私钥和自签名证书使用以下命令一次性生成一个新的私钥和自签名证书:shell复制代码opensslreq-x509-nodes-days365-newkeyrsa:2048-keyoutmycert.key-outmycert.crt-x509:表示生成一个自签名证书。-nodes:不对私钥加密(即不需要密码......
  • 雷池WAF自动化实现安全运营实操案例终极篇
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。背景作为一个小型网站的站长,往往面临资源有限(没有RMB)......
  • 虚幻引擎实操(1)《原神,启动!》
    介绍 这个文章会带大家用虚幻引擎粗略的实现原()神中的一些功能,当然啦不是做一个完整的原神出来,主要面向对象为没有编程基础或者刚刚入门的同学前言好像对于大部分0基础的同学来说虚幻引擎的学习比较抽象(做游戏本身就挺抽象的,没有狠活挣不出来qwq)。比如虚幻的界面,数百个接口,......