Bre*_*een 20 certificate azure thinktecture-ident-server
我正在编写Thinktecture IdentityServer v3的演示.目的是让身份服务器在Azure网站下运行它自己的网站.
将有其他(多个)Azure网站将使用身份服务器对用户进行身份验证.
基于入门演练(请参阅https://github.com/thinktecture/Thinktecture.IdentityServer.v3/wiki/Getting-started)我有这个主要工作.
我遇到麻烦的地方是证书.
对于演示,我想创建自己的证书 - 但我不确定我需要做什么.任何指导都会有所帮助.
我对此有其他疑问:
lea*_*ege 21
好吧 - 严格来说你需要两个证书 - 一个用于SSL,一个用于签名 - 技术上它们可以是相同的 - 但不必.他们也有不同的要求.
对于SSL - 您需要拥有一个位于客户可信列表中的证书.通常,这是来自商业CA的证书 - 或来自内部PKI.
对于签名证书 - 您可以生成自己的 - 例如使用makecert.
IdSrv在加载证书时非常灵活 - 您可以从任意来源检索它们 - 通常来自Windows证书存储区(当您具有对服务器的管理级访问权限时) - 或文件系统,或来自嵌入式资源.
我们的示例主机使用嵌入式资源方法,该方法适用于Azure WebSites.对于生产场景,您通常需要更大的灵活性(例如翻转) - 所以我会考虑从例如blob存储加载它.
bit*_*der 11
扩展最小特权答案我认为"正确"的方法是将它们安装在Azure信任存储中,但在我的情况下,我从嵌入式资源中提供它们,如idsrv3示例中所示.
以下是一些对我有用的细节.创建自签名证书:
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\makecert.exe" -r -pe -n "CN=MyAppIdentity" -sky signature MyApp.cer -sv MyApp.pvk
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\pvk2pfx.exe" -pvk MyApp.pvk -spc MyApp.cer -pfx MyApp.pfx -pi MyPassword -po MyPassword
Run Code Online (Sandbox Code Playgroud)
尽管有pvk2pfx.exe文档,我发现如果没有提供-po,那么pfx将不会保持与pvk相同的密码,而X509Certificate2()将因密码问题而失败.
使用idsrv3示例代码,idsrv3示例证书对我来说在azure上运行良好:
var assembly = typeof(Certificate).Assembly;
using (var stream = assembly.GetManifestResourceStream("MyCompany.Identity.Website.Config.idsrv3test.pfx"))
{
return new X509Certificate2(ReadStream(stream), "idsrv3test");
}
Run Code Online (Sandbox Code Playgroud)
但是,当我创建自己的证书时,它使用上面的代码在本地测试中工作正常,但在Azure上我必须添加一些额外的标志才能使它工作.我不一定确定使用这些的含义,但它们有效,所以这是一个开始:
using (var stream = assembly.GetManifestResourceStream("MyCompany.Identity.Website.Config.MyApp.pfx"))
{
return new X509Certificate2(ReadStream(stream),
"MyPassword",
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7542 次 |
最近记录: |