- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建一个 X.509 证书文件,该文件将与 smtp4dev 中的以下代码一起使用项目:
var certificate = new X509Certificate(Settings.Default.SSLCertificatePath);
var clientCertificateRequired = false;
var protocols = SslProtocols.Ssl2 | SslProtocols.Ssl3 | SslProtocols.Tls;
var checkRevocation = false;
var stream = new SslStream(stream);
stream.AuthenticateAsServer(certificate, clientCertificateRequired, protocols, checkRevocation);
Settings.Default.SSLCertificatePath
指向一个 .cer 文件。
无论我尝试什么,都会失败并出现 System.NotSupportedException
消息:
The server mode SSL must use a certificate with the associated private key.
我已经使用 New-SelfSignedCertificate 创建了一个 X509 证书提升的 PowerShell session 中的 PowerShell CommandLet:
New-SelfSignedCertificate `
-DnsName "localhost" `
-CertStoreLocation "cert:\CurrentUser\My" `
-FriendlyName "smtp4dev" `
-TextExtension "2.5.29.37={text}1.3.6.1.5.5.7.3.1" `
-KeyUsage DigitalSignature,KeyEncipherment,DataEncipherment `
-Provider "Microsoft RSA SChannel Cryptographic Provider"
我添加了这些选项以尽可能接近地镜像已存储在我的机器上的证书,该证书由 IIS Express 安装程序生成。因为那个特定的证书确实有效,尽管我不知道为什么。
这两个证书都位于 Local Computer > Personal
证书存储中。对于这两个证书,证书管理器都提到“您有一个与该证书相对应的私钥”。
当我比较这 2 个证书的属性时,smtp4dev 证书与 IIS Express 开发证书在以下 3 方面不同(除了指纹和序列号):
DNS Name=localhost
e7 12 f5 ...
我使用证书管理器将没有私钥的两个证书作为“Base-64 编码的 x.509 (.CER)”文件导出到我的桌面。 (包括私钥会将导出格式限制为 PKCS #12 (.PFX),smtp4dev 不支持该格式。)
以这种方式导出证书后,当我双击它们时,都没有显示关于拥有私钥的消息。
只有 IIS Express 开发证书适用于本问题开头显示的代码。 smtp4dev 没有。
我尝试过的其他事情:
我经常看到使用 makecert
的教程,但我没有那个程序。
我已经尝试使用由 openssl
生成的自签名证书,并且只将 Common Name
设置为 localhost
但我得到了同样的异常(exception)(“服务器模式 SSL 必须使用具有关联私钥的证书”)。
更改代码以使用 X509Certificate2 不是一个选项,因为应用补丁的 smtp4dev 的另一个版本将非常耗时,因为该项目似乎没有积极开发。
尝试不同的证书文件格式(例如 PFX)实际上是可以的,只要我将文件重命名为 .cer 就可以欺骗 smtp4dev 使用该证书。这允许我在证书中包含私钥。它适用于 IIS Express 开发证书的导出,但不适用于 smtp4dev 证书的导出。
最佳答案
只有一件事浮现在脑海: key 提供程序兼容性。 SslStream
似乎不支持 CNG KSP( key 存储提供程序),它是 New-SelfSignedCertificate` cmdlet 的默认 key 提供程序类型。
我建议在 PowerShell 调用中明确指定任何遗留提供程序:
New-SelfSignedCertificate `
-DnsName "localhost" `
-CertStoreLocation "cert:\LocalMachine\My" `
-FriendlyName "smtp4dev" `
-TextExtension "2.5.29.37={text}1.3.6.1.5.5.7.3.1" `
-KeyUsage DigitalSignature,KeyEncipherment,DataEncipherment `
-Provider "Microsoft RSA SChannel Cryptographic Provider"
关于.net - 如何创建防止 "server mode SSL must use certificate with associated private key"异常的 X509 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281590/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我有四个模型类: class Group :event_producer end class PersonalBlog :event_producer end class Event true
将应用程序从Rails 4.2.9升级到Rails 5.2.1。 通过大部分令人讨厌的部分,更新了依赖关系和诸如此类的东西,最终使应用程序在console中运行,现在尝试访问server上的页面。加载
我的 EntityDefinition 中有一个关联: ... class ParentEntityDefinition extends EntityDefinition { ...
我不确定为什么这个关联无效 class Tag < ActiveRecord::Base has_and_belongs_to_many :routes end class Route < Act
我有以下关联。 PropertyOwner 是一个连接模型,它属于一个属性(property),多态地属于一个所有者,在下面的例子中是一个 ForeclosureDefense。一切正常,直到我拥有
我有一份有很多发票的工作,一张发票属于一份工作。我想查询第一张发票在某个日期范围内的工作。我有这个查询: @jobs = Job.joins(:invoices). where("invoices
我有这样的关系:用户可以拥有零只或一只狗,但狗必须属于某人。 # dog.rb class Dog { joins(:dog) } # To get records without a dog,
在我的 Rails 4 应用程序中,我有以下模型: User has_many :administrations has_many :calendars, through: :administrati
我见过的所有示例,包括文档都建议按关联过滤应使用以下语法 [contrived exampled] User.findAndCountAll({ include: [ {
我有一个下拉列表(HTML 选择框),它从这个 MySQL 查询中获取值: "SELECT cdID, cdTitle FROM CD ORDER BY cdID" 然后将结果存储在关联数组中,然后将
我是 Ruby ON Rails 新手,我的应用有 3 个模型 class User < ActiveRecord::Base has_one :user_hobby has_one :user_
我有三个模型,每个模型都有以下关联: class Model1 :model1 # will this work? is there any way around this? end class
我有一个带有帖子和标签的数据库。我想找到的帖子,只包含一个标签与一个特定的TagID,根本没有其他标签。下面的代码可以工作,但它需要服务器手动过滤结果,这将使分页变得困难。有谁有可以做到这一点的直接查
任何人都知道如何避免 PLS-00312 错误? “PLS-00312:位置参数关联可能不遵循命名关联” 我得到这个是因为下面一行: AttachList=> v_est_proc_name||'_E
我有以下工厂定义。 Factory.define :status do |f| end Factory.define :my_status , :parent => :status do |f|
我有 2 个具有 1:M 关联的模型,定义如下: var inventory = sequelize.define("Inventory",{**model definition**}; var tr
假设这个模式: var user = sequelize.define('user', { username: Sequelize.STRING, email: Sequelize.S
我正在使用 Apple 的工具进行应用站点关联验证,该工具位于此处:https://search.developer.apple.com/appsearch-validation-tool 它给了我错
实体\识别 /** * @ORM\Entity * @ORM\Table(name="c_rcgntn") */ class Recognition { /** * @ORM\
我是一名优秀的程序员,十分优秀!