代码之家  ›  专栏  ›  技术社区  ›  Saghar

使用证书保护我的WCF服务所需的帮助

  •  0
  • Saghar  · 技术社区  · 14 年前

    我在写网络场景服务。我必须实现消息加密。我得到了一切,但当我浏览这个服务从IIS我得到以下例外。

    “/MyTestService”中的服务器错误 应用程序。

    密钥集不存在

    在执行过程中发生 当前web请求。请检查 密码。

    系统安全加密。加密例外: 存在。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    ....................................................................

    似乎是证书问题。有人能详细解释一下如何处理证书的问题吗。就当我是证书的新手。

    <system.serviceModel>
        <services>
            <service name="Test.MyService" behaviorConfiguration="MyServiceBehavior">
                <!--         Service Endpoints -->
                <endpoint address="MyTestService" binding="wsHttpBinding" bindingConfiguration="WebserviceHttpBinding" contract="Test.IMyService"/>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            </service>
        </services>
        <bindings>
            <wsHttpBinding>
                <binding name="WebserviceHttpBinding">
                    <security mode="Message">
                        <message clientCredentialType="UserName" negotiateServiceCredential="false"/>
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <behaviors>
            <serviceBehaviors>
                <behavior name="MyServiceBehavior">
                    <serviceCredentials>
                        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Test.CredentialValidator, Test"/>
                        <serviceCertificate findValue="RPKey" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
                    </serviceCredentials>
                    <!--           To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                    <serviceMetadata httpGetEnabled="true"/>
                    <!--           To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                    <serviceDebug includeExceptionDetailInFaults="true"/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Ladislav Mrnka    14 年前

    您是否设置了证书私钥的访问权限?默认情况下,私钥是安全的,因此只有管理员才能访问它们。您必须为运行服务的应用程序池的帐户设置读取权限。

    编辑: