千家信息网

OpenSSL生成自签名证书的方法有哪些

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,OpenSSL的命令行数量很庞大,很吓唬人。这是因为OpenSSL所涉及到的领域的确很多,比如各种对称/非对称算法,随机数,签名,加密,证书,结构分析,PKI体系的构建等,这些领域的背后有一大堆的RF
千家信息网最后更新 2026年10月31日OpenSSL生成自签名证书的方法有哪些

OpenSSL的命令行数量很庞大,很吓唬人。

这是因为OpenSSL所涉及到的领域的确很多,比如各种对称/非对称算法,随机数,签名,加密,证书,结构分析,PKI体系的构建等,这些领域的背后有一大堆的RFC文档,OpenSSL把这些理论上的东西都落实为算法供我们学习和使用。

算法的实现可以有2种形式:API和"工具"。

前者是由程序员使用的函数库,后者是编译完成的本地代码--它有3个名字:命令、工具,应用程序。

例如生成自签名证书的命令行:

openssl req -x509 -newkey rsa:8192 -keyout rca.key -out rca.cer -days 365

其中的"req"是"命令"(也可称为"工具"和"应用程序"),-days是"选项",365是"参数"。

俗话说"万变不离其宗",虽然它的命令行庞大而复杂,但还是有规律可循的,比如-inform 指定输入文件格式,-outform指定输出文件格式,这两个选项重复出现在多个命令之中;还有选项虽然名字相同,但对不同的命令有不同的功能,比如 -in选项,如果配合req命令,就是输入证书请求文件,如果配合x509命令,就是输入X.509格式的证书。

鉴于OpenlSSL命令行的灵活性,同一个功能可以由不同的命令行完成,以下是我的一些总结。

当然,很可能还有未囊括进来的命令行,欢迎你写在评论区,我会在正文把你列为感谢作者。

让我们共同完成这个很有趣的"工程"--给Open SSL找相同!

当前版本号:OpenSSL for Windows 1.1.1c 28 May 2019

方法 1:req命令(不需要请求文件)

::生成自签名证书和私钥openssl req -x509 -newkey rsa:8192 -keyout rca.key -out rca.cer -days 365

方法2:x509命令(需要请求文件)

::生成请求文件和私钥openssl req -new -out ca.csr -keyout ca.key::生成自签名证书openssl x509 -signkey ca.key -req -days 365 -in ca.csr -out cacert.pem

方法3:ca命令(需要请求文件)

:: 创建ca命令所需的文件和目录结构d:&cd\&md ca1&cd\ca1&md democa&md democa\newcerts&md democa\privatecd.>democa\index.txt&echo ca01>democa\serial::生成请求文件和私钥,私钥保护密码是1234:openssl req -new -out ca.csr -keyout ca.key -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=CA-1/CN=CA1/emailAddress=ca1@tiger.com -set_serial 0xca01 -passout pass:1234::生成自签名证书openssl ca -selfsign -in ca.csr -keyfile ca.key -out ca.cer -outdir .  -passin pass:1234 -days 3650 -create_serial -extensions v3_ca

方法4:ca命令重签名

读入之前的自签名证书ca1.cer,以新的DN重签名:

:: 创建ca命令所需的文件和目录结构d:&cd\&md ca1&cd\ca1&md democa&md democa\newcerts&md democa\privatecd.>democa\index.txt&echo ca01>democa\serial:: 生成自签名的CA1根证书,私钥,私钥保护密码是1234:openssl req -x509 -newkey rsa:8192 -keyout ca1.key -out ca1.cer -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=CA-1/CN=CA1/emailAddress=ca1@tiger.com -set_serial 0xca01 -passout pass:1234:: 以新的DN名称重新签名CA1根证书,输出的新自签名证书是ca1-ok.ceropenssl ca -ss_cert ca1.cer -keyfile ca1.key -cert ca1.cer -out ca1-ok.cer -outdir . -create_serial -policy policy_anything -batch -passin pass:1234 -subj /C=CN/O=aa/ST=bb/CN=CA1

作为CA给(中间CA或者最终实体)签署证书的2种方法

分别是X509命令和CA命令,详见我的另外2篇文章,这里不再赘述。

OpenSSL自建CA和CA链,给主机签发证书的批处理(使用CA命令)

OpenSSL自建CA和CA链,给主机签发证书的批处理(使用x509命令)

生成RSA私钥的3种方法

方法1:genrsa命令:

openssl genrsa -out ca.key 8192

方法2:genpkey命令:

::用密码123456保护私钥openssl genpkey -out rsa_pri.key -outform PEM -pass pass:123456 -aes-128-cbc -algorithm RSA -pkeyopt rsa_keygen_bits:8192

方法3:req命令

openssl req -x509 -newkey rsa:8192 -keyout rca.key -out rca.cer -days 3650

RSA加密的2种方法

方法1:pkeyutl命令:

::公钥加密openssl rsautl -encrypt -in a.txt -out 1.enc -inkey ca.pub -pubin::私钥解密openssl rsautl -decrypt -in 1.enc -out dec.txt -inkey ca.key

注:该命令的缺陷是只能对短小的文件进行加密和签名操作,如果太大会报以下错误:

方法2:rsautl命令:

经实验,对于当前版本的OpenSSL,该命令能处理的文件最大为1013字节

::公钥加密openssl rsautl -encrypt -in a.txt -out 1.enc -inkey ca.pub -pubin::私钥解密openssl rsautl -decrypt -in 1.enc -out dec.txt -inkey ca.key

注:若想要RSA加密(以及下文的签名)无体积限制,可以使用gpg4win。

签名/验证签名的4种方法

方法1:dgst命令:

::对待签名的文件体积没有限制;原理是生成待签名文件的散列值,然后用公钥/私钥加密该散列值。::用私钥key.pem给1.zip生成二进制的签名文件,算法是SHA-256,签名文件是1.sig,注意不能使用-hex选项:openssl dgst -sha256 -sign key.pem -out 1.sig 1.zip::用公钥对生成的签名文件1.sig与源文件1.zip进行比对验证,注意签名的算法和验证签名的算法要相同:openssl dgst -sha256 -verify pub.pem -signature 1.sig 1.zip::同上,只不过用私钥验证签名openssl dgst -sha256 -prverify key.pem -signature 1.sig 1.zip

方法2:md5命令(语法与dgst一模一样):

::对待签名的文件体积没有限制;原理是生成待签名文件的散列值,然后用公钥/私钥加密该散列值。::用私钥ca.key给文件text.txt签名,生成了名为sign的签名文件:openssl md5 -sha256 -sign ca.key -out sign test.txt::用公钥ca.pub对生成的签名文件1.sig与源文件1.zip进行比对验证,注意签名的算法和验证签名的算法要相同:openssl md5 -sha256 -verify ca.pub -signature sign test.txt::同上,只不过用私钥验证签名openssl md5 -sha256 -prverify ca1.key -signature sign test.txt

方法3:rsautl命令:

::rsautl只能给小文件签名,经我的实验不能大于1013字节::私钥签名(其实就是私钥加密文件)openssl rsautl -sign -in abc.txt -out abc.sig -inkey ca.key::公钥验证(其实就是用公钥将其解密),如果通过就恢复出原始数据,否则报错openssl rsautl -verify -in abc.sig -out abc.vfy -inkey ca.pub -pubin方法1:pkeyutl令:

方法4:pkeyutl命令:

::pkeyutl只能给散列值签名。::实验目标:给test.txt生成散列值,然后对散列值签名,最后验证这个散列值的签名。::先用dgst命令生给文件test.txt成二进制的散列值,文件名是test.sigopenssl dgst -sha256 -binary -out test.sig test.txt::用私钥给这个散列值签名(就是私钥加密散列值),生成签名文件md.sig:openssl pkeyutl -sign -inkey ca.key -keyform PEM -in test.sig -out md.sig::读入公钥、散列值签名md.sig、散列值test.sig以验证该签名是否正确。原理就是用公钥解密md.sig,结果与test.sig相同即验证通过openssl pkeyutl -verify -inkey ca.pub -keyform PEM -pubin -in test.sig -sigfile md.sig

提取公钥的4种方法

方法1:rsa命令:

openssl rsa -in ca.key -pubout -out ca.pub

方法2:pkey命令:

openssl pkey -in ca.key -pubout -out ca.pub

方法3:req命令:

提取请求文件之中的公钥:

openssl req -in host.csr -pubkey -out host.pub

方法4:x509命令:

提取证书中的主题(使用者)的公钥:

openssl x509 -in ca.cer -pubkey -noout -out ca.pub

创建证书链2方种法

方法1:双击证书,点击"安装证书",把根证书导入"受信任的根证书颁发机构",把中间证书导入"中级证书颁发机构",这就把证书链导入至windows证书库,过程一目了然,截图略。

方法2:通过copy命令创建证书链,重点是中间证书在前,依次往后排,最后是根证书:

copy ca3.cer+ca2.cer+ca1.cer ca3-chain.cer

验证证书链3方种法

方法1:对应创建证书链方法1,通过在Web客户端将根证书和中间证书导入Windows证书库,应用程序(例如谷个浏览器)可以通过CryptoAPI验证证书链。若要人工验证,双击证书即出现层次化的证书链结构:

方法2:对应创建证书链方法2,使用verify命令:

openssl verify -CAfile ca-chain.cer host1.cer

方法3:x509命令的-CApath选项

本方法在Windows下操作比较麻烦。先建立目录,例如yz,然后把根证书和所有中间CA证书都拷贝到该目录,但要改名为xxxxxxxx.0,其中的8个x是用openssl x509 -in xx.cer -subject_hash -noout输出的hash值,后面的.0必须存在。例如ca1是根证书,ca2.cer和ca3.cer是中间证书,host1是ca3给用户签署的SSL证书;就把ca1.cer、ca2.cer、ca3.cer都拷贝yz目录,然后依次改名,比如openssl x509 -in ca1.cer -subject_hash -noout输出的hash值是8607f596,就将ca1.cer改名为8607f596.0,改名全部完成之后执行命令:

openssl verify -CApath yz host1.cer
命令 证书 方法 文件 生成 验证 公钥 加密 算法 就是 相同 目录 程序 结构 输出 不同 体积 原理 密码 工具 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 博彦科技互联网金融 厦门中拓互联网络科技有限公司 互联网科技财经 科技企业和互联网企业 互联网科技缩写 融势互联网科技 亿人帮互联网科技 深圳卡尔迅互联网科技有限公司怎么样 顺网科技2021年互联网排名 西藏七维空间互联网科技有限公司 新华互联网科技2019 崇明区互联网教育科技诚信经营 赶超互联网科技 微信多开 和信科技工业互联网 互联网企业科技类企业如何做账 广州有谷有贝互联网科技有限公司 盐城市攀科互联网科技有限公司 北京瑞云互联网科技有限公司 知域互联网科技有限公司官网 前海云享互联网科技 互联网科技公司 保险科技 互联网保险 天津市摩尔互联网科技 互联网科技咨询 农村开互联网科技讲堂 花神(南京)互联网科技有限公司 图游互联网科技 昆明中奇联合互联网科技 江苏互联网智能科技产品出厂价 河南商务圈互联网科技有限公司
0