簡體   English   中英

如何獲取頒發者證書的指紋或公鑰?

[英]How to get Thumbprint or Public Key of Issuer Certificate?

我們創建了一個自簽名 CA 證書,我們用它來簽署其他證書以用於 SSL 目的。 這些證書將安裝在我們無法訪問的其他服務器中,並將嚴格與其他客戶端(如移動應用程序)進行通信。

當這些客戶端(用 .NET 編寫)使用 HTTPS 向服務器發出請求時,我們會收到“從服務器收到的無效證書”錯誤,因為 CA 證書不是該客戶端上的受信任 CA。

我們想使用ServicePointManager.ServerCertificateValidationCallback繞過這種安全性,但前提是所使用的證書是由我們的 CA 證書簽名的。

我可以檢查certificate.Issuer ,但這很容易被任何人欺騙。 如何獲取無效證書的頒發者證書的指紋或公鑰? 如果我可以訪問它,我可以輕松地將它與我知道的有效的進行比較,並忽略證書錯誤並繼續請求。

更新

我想我越來越近了。 看起來我們想要做的事情是不可行的,所以方向略有不同。

使用X509Chain ,我們可以使用以下代碼驗證證書是否是 CA 的子證書:

var caCert = new X509Certificate2(@"[path]\MyCA.cer");

var newChain = new X509Chain();
newChain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
newChain.ChainPolicy.ExtraStore.Add(caCert);

var res = newChain.Build(certInQuestion);

Build()仍然返回 false (正如預期的那樣,因為 CA 在客戶端上不受信任),但現在newChain.ChainStatus[0].Status正在返回UntrustedRoot 根據我的測試,這意味着鏈經過驗證,因為如果我提供不同的 CA 證書,它會因InvalidChain而失敗。

總之,這告訴我,如果 Status 是UntrustedRoot ,則證書使用我們的 CA 證書創建的,因此它是有效的,否則它是假的!

我的假設正確嗎?

我不完全確定這就是您正在尋找的東西,但它可能會將您推向正確的方向。 這是我用來查找剛剛使用 MAKECERT.EXE 和 CERTMGR.EXE 創建和提取的證書的 PowerShell 腳本:

# get certificate thumbprint
$appCertificate = Get-PfxCertificate -FilePath $certificateFullPath

Write-Host "  .. adding certificate to local machine root" -ForegroundColor Gray 
& $ExeCertManager /add $certificateFullPath /s /r localMachine root
Write-Host "  Certificate installed on local machine" -ForegroundColor Gray 

Write-Host "  .. exporting private key for certificate" -ForegroundColor Gray 
Get-ChildItem cert:\\localmachine\my | Where-Object {$_.Thumbprint -eq $appCertificate.Thumbprint} | ForEach-Object {
    $CertPfxName = (Get-Item -Path $certificateFullPath).BaseName
}

那是錯誤的解決方案。 您應該在所有客戶端中將您的自簽名證書安裝為受信任的 CA 證書,或者最好還是讓已受信任的 CA 對其進行簽名。 不要為此編寫代碼。

根據以下答案,似乎一個可能的解決方案是您可以通過電子郵件發送證書: https ://stackoverflow.com/a/4473799/674700。

以下是一些信息鏈接和一些生成免費公鑰和私鑰的工具:

https://www.igolder.com/pgp/

https://www.igolder.com/pgp/generate-key/

我認為 EJP 的解決方案是最能接受的。 @EJP,您能否給我們一些可以幫助我們成為“微型 CA”的應用程序示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM