<Certificates>
<Certificate name="MyRandomName" storeLocation="LocalMachine" storeName="My" />
</Certificates>
当我的 ServiceDefinition.csdef 中有上述内容时。这是证书在服务器上获得的名称“MyRandomName”吗?
如何在 OnStart 调用中获取它的 X509Certificate2 实例?我是否需要有一个设置来告诉指纹来查找它?
最佳答案
我找到了解决问题的另一种方法:
我可以解密这样的设置:
var encryptedBytes = Convert.FromBase64String(setting);
var envelope = new EnvelopedCms();
envelope.Decode(encryptedBytes);
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
envelope.Decrypt(store.Certificates);
string passwordChars = Encoding.UTF8.GetString(envelope.ContentInfo.Content);
当它像这样加密时:
X509Certificate2 cert = LoadCertificate(
System.Security.Cryptography.X509Certificates.StoreName.My,
System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, args[0]);
byte[] encoded = System.Text.UTF8Encoding.UTF8.GetBytes(args[1]);
var content = new ContentInfo(encoded);
var env = new EnvelopedCms(content);
env.Encrypt(new CmsRecipient(cert));
string encrypted64 = Convert.ToBase64String(env.Encode());
这意味着用户不必添加除
之外的任何指纹<Certificates>
<Certificate name="Composite.WindowsAzure.Management" thumbprint="3D3275357F9DADDDF31F7597656B42137BBBCD56" thumbprintAlgorithm="sha1" />
</Certificates>
在 cscfg 中获取他们的云服务,并将其上传到 ofcause 门户上。
args[0] 和 args[1] 只是要使用的证书和要加密的设置值的指纹。
关于azure - 如何通过 Azure 上的 ServiceDefinition 中给出的名称获取证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18652778/