Windows证书管理

本文详细介绍了Windows系统中的数字证书管理,包括证书的扩展名如.cer和.crt,以及X.509标准。文章重点讲解了两个证书管理工具certlm.msc和certmgr.msc的使用,包括证书导入、导出、安装和删除的步骤,并提到了实验环境和证书申请工具certreq.exe。此外,还介绍了Certmgr.exe和Certutil.exe的命令行用法,用于证书的查询、导入和备份等操作。

windows里提供了数字证书管理工具,用于管理我们PC里安装的许多数字证书。

数字证书是一种电子文件,那么它有一定的格式,也有拓展名。但是拓展名多种多样。使用CA证书可以防止未经过认证的人访问我们的系统。

 

证书的扩展名

Windows中的证书扩展名有好几种,比如.cer和.crt。通常而言 .cer文件是二进制数据,而.crt文件是ASCII码的文本文件。

cer文件包含依据DER(Distinguished Encoding Rules)规则编码的证书数据,这是x.590标准中指定的编码格式。

X.509

X.509是一个最基本的公钥格式标准,里面规定了证书需要包含的各种信息。通常我们提到的证书,都是这个格式的,里面包含了公钥、发布者的数字签名、有效期等内容。

CER = CRT证书的 微软型式。可以用微软的工具把CRT文件转换为CER文件。

 

用windows窗口打开 一个数字证书的命令行:
rundll32  CryptExt.dll,CryptExtOpenCER   cert.cer

 

两个证书管理工具

windows系统有两个证书管理工具certlm.msc和certmgr.msc,前者是本地计算机的证书管理工具,而后者是当前用户的证书管理工具。在导入证书时需要注意。如果证书仅是给当前用户使用那么就可以使用certmgr.msc。并且在启动certmgr.msc时不需要管理员权限,而certlm.msc需要管理员权限,否则就只能查看证书而不能导入证书。

cmd命令里,打开证书管理器的命令

certlm.msc 本地计算机

certmgr.msc  当前用户

这两个工具是管理不同的存储区,所以在要特别注意不要安装错了,不然你会头疼迷惑一天:怎么安装了证书就是看不到,还以为是命令错了,代码错了。

 

实验环境

我们的环境里有一台安装CA服务器的电脑,一个客户端PC。与大的权威CA不同,这里的CA是自己搭建windows的服务器

申请CA证书工具

证书请求工具certreq.exe,用于向CA服务器申请证书:

certreq.exe    -new   -f     -config "http://192.168.101.39/certsrv"    -UserName "111"   -p "123456"       D:\Certificate\ClientCert.inf.txt    D:\Certificate\ClientCert.req
certreq.exe -submit     D:\Certificate\ClientCert.req    D:\Certificate\ClientCert.cer

这里就是向服务把ClientCert.cer证书文件下载到了本地PC。

ClientCert.inf.txt  文本里面内容:
[NewRequest]
Subject="CN=<DCFQDN>"
KeyLength=2048
ProviderName="Microsoft RSA SChannel Cryptographic Provider"
RequestType=CMC
[RequestAttributes]
CertificateTemplate="User"
[Extensions]

 

 

Certmgr.exe证书管理工具

软有一个名为Certmgr.exe的证书管理器工具可以用于命令安装证书,该工具主要用于管理证书、证书信任列表 (CTL) 和证书吊销列表 (CRL),

Certmgr.exe具体参数的示例请参考:
http://msdn.microsoft.com/zh-cn/library/e78byta0(VS.80).aspx。

该工具是SDK Tool的一部分,您可以下载最新的Windows SDK发行版获得此工具;若您安装了visual studio,该工具也包含在安装目录中。C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin

cermgr.exe:下载链接

https://pan.baidu.com/s/1wnA-i0ixhSftPsMxv8OQ-Q

Certmgr.exe的使用

在cmd中执行certmgr会弹出证书管理工具的GUI。

如何把数字证书导入到Windows根证书存储区


安装证书(导入证书)

下面列出两个例子来理解:

certmgr.exe -add "GeoTrust SSL CA - G3.cer" -s -r localMachine AuthRoot

certmgr.exe -add GeoTrust_Global_CA.cer -s -r localMachine Root

上面两条命令会分别把GeoTrust SSL CA - G3证书添加到第三方证书颁发机构,

GeoTrust_Global_CA证书添加到受信任的根证书颁发机构。

 

如果你的client端没有certmgr.exe,您可以下载它,并把它放到当前目录下

certmgr.exe -add D:\test.cer -s -r  localMachine trustedpublisher  (需要管理员权限)
certmgr.exe -add D:\test.cer -s -r   AuthRoot   (不需要管理员权限)

这里localMachine说明了是安装在本地计算机下,省略默认是在用户下。

这两个命令就把这个证书test.cer添加到 localMachine trustedpublisher和AuthRoot证书存储区里了。

 

安装证书:(进入到CertMgr.exe工具目录,并且是以管理员权限打开cmd,注册cer证书,将该证书文件添加到证书存储区)
CertMgr.exe  -add -all D:\certificate\ClientCert.cer   -s my      (my是证书的个人personal项)( my 是默认到了用户的my)
CertMgr Succeeded    (执行成功)


添加证书

D:\certificate>certmgr.exe -add clientcert.cer -c -s -r localMachine TrustedPublisher
Error: Failed to save to the destination store
CertMgr Failed (需要管理员权限)

certmgr.exe -add clientcert.cer -c -s -r localMachine TrustedPublisher (本地计算机下)
CertMgr Succeeded

certmgr.exe -add clientcert.cer -c -s -r localMachine  My (本地计算机下)
CertMgr Succeeded

certmgr.exe -add clientcert.cer -c -s  my   (当前用户下)
CertMgr Succeeded

 

参数r的作用: 

 /r   registry location 标识系统存储区的注册表位置。仅当指定 /s 选项时才考虑此选项。Registry location 必须是下列值之一:
                     currentUser 指示证书存储区在 HKEY_CURRENT_USER 键下。此为默认值。
                     localMachine 指示证书存储区在 HKEY_LOCAL_MACHINE 键下。

 

 证书存储区

 My 个人证书的X.509证书存储区。
 AddressBook 其他用户的X.509证书存储区。
 AuthRoot 第三方证书颁发机构(CA)的X.509证书存储区。
 CertificateAuthority 中间证书颁发机构(CA)的X.509证书存储区。
 Disallowed 吊销的证书的X.509证书存储区。
 Root  受信任的根证书颁发机构(CA)的X.509证书存储区。 
 TrustedPeople 直接受信任的人和资源的X.509证书存储区。 
 TrustedPublisher 直接受信任的发行者的X.509证书存储区。

 

卸载证书

例:删除指定证书:

删除证书
certmgr.exe -del  clientcert.cer  -c  -s -r localMachine TrustedPublisher
CertMgr Succeeded

certmgr.exe -del  clientcert.cer  -c  -s -r localMachine My
CertMgr Succeeded

certmgr.exe -del -c -n "Tencent Technology(Shenzhen) Company Limited" -s -r localMachine addressbook

下面这句是OK的
certmgr.exe -del -c -n "Tencent" -s -r localMachine my

 
 

查看证书

查看某个证书文件的信息:

certmgr.exe  -c clientcert.cer
==============Certificate # 1 ==========
Subject::
  [0,0] 0.9.2342.19200300.100.1.25 (DC) work
Issuer::
  [2,0] 2.5.4.3 (CN) 
SerialNumber::
MD5 Thumbprint::
NotBefore::
  Tue Jun 23 14:21:13 2020
NotAfter::
  Wed Jun 23 14:21:13 2021
==============================================
CertMgr Succeeded

查看所有证书
certmgr /v /s my

 

CertMgr -del -c -n abc -s my            删除电脑里my区域(可以改成root--受信任的根证书...)内"abc"开头的证书。
certmgr /v /s my            查询my内所有证书。

certmgr帮助说明

certmgr  输入参数错误,或者输入-help参数,都会给出提示如下:

certmgr [/add | /del | /put] [options]
[/s[/r registryLocation]] [sourceStorename]
[/s[/r registryLocation]] [destinationStorename]

参数
--------------------------------------------------------------------------------
参数                 说明  
sourceStorename      StoreFile 类型或系统存储区类型的输入证书存储区。
destinationStorename 输出证书存储区或文件。

选项                 说明 

  • /add                 将证书、CTL 和 CRL 添加到证书存储区中。
  • /all                  当与 /add 一起使用时添加所有项。当与 /del 一起使用时删除所有项。不带 /add 或 /delete 选项使用时显示所                        有项。/all 选项不能与 /put 一起使用。
  • /c                   当与 /add 一起使用时添加证书。当与 /del 一起使用时删除证书。当与 /put 一起使用时保存证书。不带                                     /add、/delete 或 /put 选项使用时显示证书。 
  • /CRL                 添加或删除 CRL。不带 /add、/delete 或 /put 选项使用时显示 CRL。 
  • /CTL                 添加或删除 CTL。不带 /add、/delete 或 /put 选项使用时显示 CTL。
  • /delete              从指定的证书存储区中删除证书、CTL 和 CRL。
  • /e encodingType      指定证书编码类型。
  • /f dwFlags           指定存储区打开标志。这是传递到 CertOpenStore 的 dwFlags 参数。默认值为                               CERT_SYSTEM_STORE_CURRENT_USER。仅当使用 /y 选项时才考虑此选项。
  • /h[elp]              显示该工具的命令语法和选项。
  • /n commonName String 指定要添加、删除或保存的证书的公共名。此选项只能用于证书,不能用于 CTL 或 CRL。
  • /put                 将证书存储区中的 X.509 证书、CTL 或 CRL 保存到文件。该文件将以 X.509 格式保存。/7 选项可与 /put 选项一起使用以 PKCS #7 格式保存文件。/put 选项后面必须有 /c、/CTL 或 /CRL。/all 选项不能与 /put 一起使用。 
  • /r registry location 标识系统存储区的注册表位置。仅当指定 /s 选项时才考虑此选项。Registry location 必须是下列值之一:                     currentUser 指示证书存储区在 HKEY_CURRENT_USER 键下。此为默认值。    localMachine 指示证书存储区在 HKEY_LOCAL_MACHINE 键下。
  • /s                   指示证书存储区是系统存储区。如果不指定此选项,则该存储区为 StoreFile。
  • /sha1 sha1Hash       指定要添加、删除或保存的证书、CTL 或 CRL 的 SHA1 哈希。
  • /v                   指定详细模式;显示有关证书、CTL 和 CRL 的详细信息。此选项不能与 /add、/delete 或 /put 选项一起使用。
  • /y storeProviderType 指定存储区提供程序类型。
  • /7                   将目标存储区保存为 PKCS#7 对象。 
  • /?                   显示该工具的命令语法和选项。
     

certutil工具

 https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certutil

 

Certutil.exe is a command-line program, installed as part of Certificate Services. You can use certutil.exe to dump and display certification authority (CA) configuration information, configure Certificate Services, backup and restore CA components, and verify certificates, key pairs, and certificate chains.

Certutil.exe是一个命令行程序,作为证书服务的一部分安装。你可以用certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件,以及验证证书、密钥对和证书链。

查询证书

certutil -store -user My
My "个人"    查询用户下,个人选项下的证书
================ 证书 0 ================
序列号: 2a0000016b40155bdce08d08da00010000016b
颁发者: CN= -HEG-DC01-CA, DC= , DC=work
 NotBefore: 2020/6/23 14:21
 NotAfter: 2021/6/23 14:21
使用者: E= , 
证书模板名称 (证书类型): User
非根证书
模板: User
证书哈希(sha1): 5df252e0e0580c4f2459bb1eb7b9a5a9588f8a38
没有密钥提供程序信息
找不到解密的证书和私钥。


CertUtil: -store 命令成功完成。

 

WINDOWS 导入p7b , cer证书
certutil -addstore -f root "c:\CA\CertnName.p7b"

CERTUTIL -addstore -enterprise -f -v root "C:\clientcert.cer"

 

导入pfx证书 

 certutil    -user  -f -p   123456789   -importpfx        C:\Users\clientcert.pfx   
 安装证书到  “用户——个人”  下。  参数-user 是用户 证书管理下。

 certutil    -f -p   123456789   -importpfx   Root     C:\Users\clientcert.pfx   

安装证书到 “本地计算机——受信任的根证书” 下的证书。

 

删除证书

 CertUtil  -f  -delstore -user My  证书name

将删除在 用户——个人下的证书。

 

 

问题

打开证书管理弹窗提示:  无法打开  证书管理器    MYSTORE  

这里丢失了证书项,进到证书管理器里,在相应的项里,添加一个证书,指明cer证书的文件路径,安装证书,这么操作系统会自行把丢失的证书项建立好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值