我正在构建一些 .net 代码,这些代码将在我们的一台服务器上按计划无人值守地运行。其执行的一部分要求它执行一个 Java 可执行文件,该可执行文件通过 SSL 与某些 Web 资源和服务进行通信。
如果 Java 通过 SSL 执行某些操作并且它没有远程证书链中的每个证书,那么它绝对会大发雷霆。因此,在 .NET 中,我需要能够指定一个https://资源,并需要它在本地下载整个远程链。
为什么我要自动执行此操作?因为我想让部署变得简单,并且不必执行此操作 4 次,然后每次 Oracle 证书过期时都执行此操作。
我正在这样做:
X509Certificate2 lowestCert = SecurityHelper.DownloadSslCertificate(keyDownloadLocation);
X509Chain chain = new X509Chain();
chain.Build(lowestCert);
int counter = 0;
foreach (X509ChainElement el in chain.ChainElements) {
//Extract certificate
X509Certificate2 chainCert = el.Certificate;
//Come up with an alias and save location
string alias = certBaseName + counter;
string localLocation = Path.GetDirectoryName(
System.Reflection.Assembly.GetEntryAssembly().Location
) + @"\" +alias + ".cer";
//Save it locally
SecurityHelper.SaveCertificateToFile(chainCert, localLocation); …Run Code Online (Sandbox Code Playgroud)