如何修复用于检查已安装证书的脚本

时间:2019-02-06 18:22:34

标签: batch-file cmd

我的脚本有问题。我制作了用于检查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中安装。或不。如果没有,请安装它。如果已经安装,则跳过安装。

2 个答案:

答案 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)