• WCF证书创建方法


    A.创建证书:

    (1)将创建证书工具makecert.exe放到任意地方。可以把该文档中的makecert.exe工具复制粘贴到任意目录。

    (2)doc命令去到makecert.exe的路径,然后输入命令makecert -sr localmachine -ss My -n CN=DeferredTopupServer -sky exchange -pe -r。其中localmachine表示证书放的位置是本地计算机,My表示证书放在个人证书中,DeferredTopupServer这个是证书的名字根据实际需要改动。

    3)成功后,可以在控制台本地计算机个人证书中看到新创建的名为DeferredTopupServer的证书。步骤:
    在运行中输入“mmc”-->在控制台窗口中单击“文件”菜单下的“添加删除管理单元”-->在添加/管理单元窗口的独立页,单击“添加”-->在添加独立管理单元窗口,选择“证书”,单击“添加”-->在证书管理单元窗口,选择“计算机账户”,“下一步”-->选择“本地计算机”,单击“完成”。
    展开本地计算机中个人证书,可以查询DeferredTopupServer证书。

    (4)在localmachine的My下创建好两个不同名字的证书(一个是用在web service config中,一个是用在IIS上https binding中)后,复制my中新建的两个证书到“本地计算机”下“受信任的根证书颁发机构”中。
    (5)因为是创建的带私钥的证书,所以要将这两个证书对应的私钥文件权限设置为everyone,简单起见就是将MachineKeys文件夹的权限设置为everyone,目录为...CryptoRSAMachineKeys

    B 导入证书 (当有.pfx的证书文件时,不需要创建证书,只需要导入或安装到控制台证书的相应位置即可,此处只介绍导入方式)

    (1)打开控制台的本地计算机证书,步骤类似创建证书中的步骤(3),将该文档中的.pfx文件复制粘贴到任意的目录下。

    (2)右击“个人”-->“所有任务”-->“导入”-->“下一步”-->单击“浏览...”,“下一步”-->输入密码,一定要勾选“标志此秘钥为可导出的。这将允许您在稍后备份或传输秘钥”,“下一步”-->“下一步”“完成”

    (3)同样的步骤导入其他证书,使“本地计算机”的“个人”和“受信任的根证书颁发机构”都有两个证书。
    (4)将MachineKeys文件夹的权限设置为everyone,目录为...CryptoRSAMachineKeys

    C.导出证书:

    1 导出.pfx文件:
    在控制台中找到想要导出的证书-->右键“证书名字”,“所有任务”,“导出”-->“下一步”-->勾选“是,导出私钥”,“下一步”-->只选择“私人信息交换”,“下一步”-->自己给定一个密码,输入“密码”,“确认密码”,“下一步”-->点击“浏览”指定存放.pfx文件的位置和文件名,“下一步”-->“完成”

    2 导出.pem文件:(只要导出web service config中的证书)
    (1)在控制台中找到想要导出的证书-->右键“证书名字”,“所有任务”,“导出”-->“下一步”-->勾选“不,不要导出私钥”,“下一步”-->勾选“Base64 编码 x509”,“下一步”-->点击“浏览”指定存放文件的位置和文件名,“下一步”-->“完成”。此时导出的文件是扩展名为.cer的文件
    (2)将导出的.cer文件,重命名为.pem的文件即可。

     常见问题

    1:异常详细信息: System.Security.Cryptography.CryptographicException: 密钥集不存在。
    ArgumentException: 证书“CN=MyServerCert”必须具有能够进行密钥交换的私钥。该进程必须具有访问私钥的权限。

    该问题可能存在两个情况:
    A:帐户没有权限访问证书的私钥文件。解决方案就是找到证书的私钥文件找到,(位置类似Windows xp存放在:C:Documents and SettingsAll UsersApplication DataMicrosoftCryptoRSAMachineKeys
       Windows vista存放在:C:ProgramDataMicrosoftCryptoRSAMachineKeys )将权限设置最大

    B:根本没有没有该证书的私钥文件, 地址同A.这种情况一般产生是由于Makecert没有在本机上做,证书是从另外的机器导入进来的. 导入的时候由于服务器的原因不能导入私钥到这个服务器上. 解决方案就是在这服务器上直接用makecert产生证书.

    查找证书私钥:

    FindPrivateKey My LocalMachine -n "CN=www.ecepdi.com"    或

    FindPrivateKey My LocalMachine -t "指纹密钥"

    WinHttpCertCfg.exe -g -c LOCAL_MACHINEMY -s "证书名" -a Network Service 

    设置完成后,IIS宿主不是马上就可以访问密钥,所以不要急,可以iisreset命令重启IIS

  • 相关阅读:
    win10下查看进程,杀死进程
    Pycharm,debug调试时怎样带参数
    struts2,登录功能模块实现
    struts2处理.do后缀的请求
    struts2 修改action的后缀
    j2ee中如何拦截jsp页面?
    4个好用的JS联动选择插件
    css position:absolute 如何居中对齐
    使用jquery插件报错:TypeError:$.browser is undefined的解决方法
    phpcms v9后台多表查询分页代码
  • 原文地址:https://www.cnblogs.com/BinZeng/p/3635862.html
Copyright © 2020-2023  润新知