1

我想在没有管理员权限的情况下将Mozilla 的根证书添加到 Windows 7。

是否有直接的方法将根证书添加到当前用户的证书存储中?我更喜欢使用 Windows 的本机工具,而不依赖于我必须下载的东西。

一些看起来很有希望的资源。

4

1 回答 1

0

我结束了制作一个powershell脚本来做到这一点。

在运行之前验证此代码。它将http://curl.haxx.se/ca/cacert.pem中 的所有证书颁发机构添加到当前用户的TRUSTED ROOT证书存储中。

要在单个命令中运行它,请将以下内容粘贴到命令提示符中:

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://raw.github.com/jschaf/install-mozilla-certs/master/install-mozilla-cert.ps1'))"

这是 Github 链接:https ://github.com/jschaf/install-mozilla-certs

来源:

# Variables
$url = "http://curl.haxx.se/ca/cacert.pem"

# Download the certificates
Write-Host "Downloading Mozilla certificates from $url."
$downloader = New-Object System.Net.WebClient
$rawcerts = $downloader.DownloadString("http://curl.haxx.se/ca/cacert.pem")

# Remove headers and begin/end delimiters and convert into a byte
# stream
$header = "-----BEGIN CERTIFICATE-----`n"
$footer = "`n-----END CERTIFICATE-----"
$match_string = "(?s)$header(.*?)$footer"
$certs_matches = Select-String $match_string -input $rawcerts -AllMatches
$certs_base64 = $certs_matches.matches | %{ $_.Groups[1].Value }
$certs_bytes = $certs_base64 | %{ ,[System.Text.Encoding]::UTF8.GetBytes($_) }

# Install the certificates
$user_root_cert_store = Get-Item Cert:\CurrentUser\Root
$user_root_cert_store.Open("ReadWrite")
foreach ($c in $certs_bytes) {
    $cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2(,$c)
    $user_root_cert_store.Add($cert)
}
$user_root_cert_store.Close()
Write-Host "Finished installing all certificates."

一件烦人的事情是,Windows 会提示每个证书是/否。由于它正在安装 158 个证书,因此它很快就会变老。如果有人知道如何阻止确认,请告诉我或放弃拉取请求。

于 2013-06-14T20:43:17.263 回答