如何制作一个自签名证书(根证书)

如何制作一个自签名证书(根证书)

什么是自签名证书?

一个证书通常包含两个部分: Subject(使用者) + Issuer(颁发者)

每个证书都有一个上级(颁发者),直到根证书 [当前证书] —> [颁发者证书] —> [颁发者的颁发证书] —> … —> [根证书]

自签名证书(根证书)的颁发者是它自己 [当前证书] —> [颁发者证书(当前证书)]

PC(windows)是如何验证一个证书是否有效呢?

Windows 会从叶子证书(当前证书)开始,逐级验证,直到找到一个受信任的根证书

PC是如何判断根证书是否受信任?

Windows 有一个本地的「受信任根证书颁发机构」存储区(Trusted Root Certification Authorities) 如果证书链中的根证书在这个存储区中,那说明是受信任的

为什么要制作一个自签名证书?

主要是出于测试目的.

比如我们在本地部署了一个https服务器, 我们要为其提供一证书, 我们可以向证书机构申请一个证书使用, 但申请过的都知道这是这非常麻烦的, 因此我们想要自己制作一个证书, 并将其放到windws的「受信任根证书颁发机构」中, 这样我们就可以使用这个证书作为测试使用.

有时候我们需要为一个可执行文件签名, 特别是在测试一个驱动的时候, 如果这个驱动文件没有签名windows会拒绝安装, 这个时候我们就需要使用一个测试根证书为其签名.

如何制作一个自签名文件?

我们使用OpenSSL来生成证书, 所以要先安装OpenSSL, 然后使用以下脚本(bat脚本):

:: openssl.exe所在路径

SET openssl_rootpath="C:\Program Files\OpenSSL-Win64\bin"

:: 生成的文件存放路径

SET rootpath="F:\My\ddwork_space\dd\projects\test\res\cret"

:: 生成pfx名称: XXX.pfx

SET name=ddm

:: 生成的pfx密码

SET psw=123456

:: 删除并重新生成 openssl.cfg

del %rootpath%\openssl.cfg

(@echo [ req ]

@echo default_bits = 2048

@echo distinguished_name = req_distinguished_name

@echo req_extensions = v3_req

@echo prompt = no

@echo [ req_distinguished_name ]

@echo C = CN

@echo ST = YourState

@echo L = YourCity

@echo O = YourOrganization

@echo OU = YourUnit

@echo CN = localhost

@echo [ v3_req ]

@echo keyUsage = critical, digitalSignature, keyEncipherment

@echo extendedKeyUsage = serverAuth, codeSigning

@echo basicConstraints = critical,CA:FALSE

@echo subjectAltName = @alt_names

@echo [ alt_names ]

@echo DNS.1 = localhost

@echo IP.1 = 127.0.0.1)>%rootpath%\openssl.cfg

:: @echo subjectAltName = @alt_names 是必须的,浏览器会验证

:: 生成私钥

%openssl_rootpath%\openssl genrsa -out %rootpath%\tmp_private.key 2048

:: 生成csr

%openssl_rootpath%\openssl req -new -key %rootpath%\tmp_private.key -out %rootpath%\tmp.csr -config %rootpath%\openssl.cfg

:: 生成crt

%openssl_rootpath%\openssl x509 -req -days 3650 -in %rootpath%\tmp.csr -signkey %rootpath%\tmp_private.key -out %rootpath%\tmp.crt -extensions v3_req -extfile %rootpath%\openssl.cfg

:: 生成自签名pfx

%openssl_rootpath%\openssl pkcs12 -export -out %rootpath%\%name%.pfx -inkey %rootpath%\tmp_private.key -in %rootpath%\tmp.crt -name "%name%" -passout pass:%psw%

:: 删除中间文件

del %rootpath%\tmp_private.key

del %rootpath%\tmp.csr

del %rootpath%\tmp.crt

del %rootpath%\openssl.cfg

生成完成后双击生成XXX.pfx文件安装:

下一步中的密码是脚本中指定的密码

一定要选择: 将所有的证书到放到下列存储 -然后点击浏览 -选择受信任的根证书颁发机构

点击完成即可完成安装

相关推荐

《地下城与勇士:起源》净化之石获取攻略
365平台是做什么的

《地下城与勇士:起源》净化之石获取攻略

📅 08-20 👁️ 6310
傈僳族源流分布及傈僳族蔡氏概况
365平台是做什么的

傈僳族源流分布及傈僳族蔡氏概况

📅 07-27 👁️ 779
冠军蓄电池质量怎么样
365bet手机在线投注

冠军蓄电池质量怎么样

📅 09-02 👁️ 9489
點校本二十四史
365平台是做什么的

點校本二十四史

📅 07-01 👁️ 1440
意想不到!猫已经达到了进化的完美?看看进化生物学家怎么说的
迪文屏横屏用作竖屏的方法
bet体育365官网正规平台

迪文屏横屏用作竖屏的方法

📅 09-13 👁️ 6914