我的脚本有问题。我制作了用于检查Windows中已安装的crt证书的脚本。
FOR /F "tokens=* USEBACKQ" %%F IN (`"openssl.exe 2>nul" x509 -in root-public.crt -noout -subject`) DO (
SET var=%%F
)
rem ECHO %var%
FOR /F "tokens=1,2,3,4 delims=/" %%A IN ("%Var%") DO (
FOR /F "tokens=1,2 delims==" %%E IN ("%%D") DO (
SET var=%%F
)
)
ECHO %var%
仅显示证书中的OU。 我要从根存储系统Windows(OU)获取/检查证书,然后比较这两个参数。
我如何从Windows Truested根存储中获取/验证证书?
详细信息: 我使用命令行运行代理。该代理必须在浏览器中安装了证书。我想在运行代理应用之前创建一个脚本,以验证证书是否已在Windows中安装。或不。如果没有,请安装它。如果已经安装,则跳过安装。
答案 0 :(得分:0)
这看起来像是我认为您问题中的代码应该是以下内容的一行版本:
@For /F "Tokens=4 Delims=/" %%A In ('"OpenSSL.exe x509 -in root-public.crt -noout -subject 2>Nul"') Do @For /F "Tokens=2 Delims==" %%B IN ("%%A") Do @Set "Var=%%B"
要对其进行测试,请在其下方添加以下行。
@Set Var & Pause
...让我们知道发生了什么事。
答案 1 :(得分:0)
谢谢大家的解决方案。解决方法是:
for /f "tokens=4 delims=/" %%A in ('"OpenSSL.exe x509 -in root-public.crt -noout -subject 2>nul"') do for /f "tokens=2 delims==" %%B in ("%%A") do set "varfile=%%B"
for /f "tokens=1" %%A in ('certutil -user -enterprise -v -store root ^| find "OU=handling"') do for /f "tokens=2 delims==" %%B in ("%%A") do set "varstore=%%B"
for %%A in ("%varfile%") do for %%B in ("%varstore%") do if "%%~fA" NEQ "%%~fB" (echo Error: Certificate Not exist)