如何从客户端证书中读取公用名?

Sin*_*tic 5 .net c# client-certificates

我们的应用程序需要一个数据,它包含在客户端证书的通用名称中.目前,我正试图从HttpContext.Current.Request.ClientCertificate获取它.我怎么读出来的?可悲的是,我正在尝试对这个盲人进行编码,同时我弄清楚为什么SoapUI没有发送证书,所以除了阅读有关MSDN上的对象并探索空属性之外,我没有尝试过多,但我不确定我正在寻找什么.那么回顾一下,我需要做些什么来从这个证书中提取通用名称?TIA

Yew*_*Tat 10

我可能来不及回答你的问题,但我希望这可以帮助那些正在寻找通过证书获得通用名称的人.

如果您使用"主题",则可能需要删除其他不必要的信息.例如,CN = localhost,OU = DepartmentName,O = CompanyName,L = Location,S = State,C = Country

Dim store As New X509Store(StoreName.My, StoreLocation.LocalMachine)
store.Open(OpenFlags.ReadOnly)
store.Certificates(0).Subject
Run Code Online (Sandbox Code Playgroud)

但是如果您使用下面的代码,您将获得"localhost",它直接为您提供证书的通用名称.

Dim store As New X509Store(StoreName.My, StoreLocation.LocalMachine)
store.Open(OpenFlags.ReadOnly)
store.Certificates(0).GetNameInfo(X509NameType.SimpleName, False)
Run Code Online (Sandbox Code Playgroud)

以下是供参考的链接: - https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.getnameinfo(v=vs.110).aspx