电脑知识-dnf安全模式怎么解除不了

clientkey
2023年4月4日发(作者:app真机测试)

HTTPS双向认证使用说明

现在邮件发出的文件有四个,分别是apiclient_cert.p12、apiclient_、

apiclient_、。

apiclient_cert.p12

包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身

份,请妥善保管不要泄漏和被他人复制

部分安全性要求较高的API需要使用该证书来确认您的调用身份

windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的

商户ID(如:10010000)

apiclient_

从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复

部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已

为您直接提供;您也可以使用openssl命令来自己导出:opensslpkcs12-clcerts-nokeys-in

apiclient_cert.p12-outapiclient_

apiclient_

从apiclient_cert.p12中导出密钥部分的文件,为pem格式,请妥善保管不要泄漏和被他人复

部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已

为您直接提供;您也可以使用openssl命令来自己导出:opensslpkcs12-nocerts-in

apiclient_cert.p12-outapiclient_

微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时

也需要验证所调用服务器及域名的真实性,该文件为签署微信支付证书的权威机构的根证

书,可以用来验证微信支付服务器证书的真实性

某些环境和工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,

这里提供给您在未内置所必须根证书的环境中载入使用

https双向认证上述文件使用说明:

问:什么是双向认证?

答:双向认真顾名思义,就是指服务器与客户端进行通信的时候,两者相互进行签名校验,

以确保双方身份,映射到上述四个文件,既服务器验证客户端的时候通过客户端证书和签名

(既:apiclient_cert.p12或者apiclient_和apiclient_),客户端验证服务器通

过ca的根证书进行(),根证书有些操作系统上或者开发环境中已经包含,此时

不需要导入,但如果找不到跟证书时则需要使用。

1、如果基于curl调用https访问接口,(如:c++、php等语言使用libcurl访问)

需要使用到上述的piclient_、apiclient_文件,当找不到ca根证书的时候还

需要文件。

使用如下:(php,c++类似)

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false)

curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/apiclient_);

curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/apiclient_');

curl_setopt($ch,CURLOPT_CAINFO,'');

2、JAVA使用证书文件

JAVA只需要使用apiclient_cert.p12即可,如果使用JAVA语言进行开发的可以忽略其余三个

pem格式的文件。

使用如下:

//指定读取证书格式为PKCS12

KeyStorekeyStore=tance("PKCS12");

//读取本机存放的PKCS12证书文件

FileInputStreaminstream=newFileInputStream(newFile("D:/apiclient_cert.p12"));

try{

//指定PKCS12的密码(商户ID)

(instream,"10010000".toCharArray());

}finally{

();

}

SSLContextsslcontext=()

.loadKeyMaterial(keyStore,"10010000".toCharArray()).build();

//指定TLS版本

SSLConnectionSocketFactorysslsf=newSSLConnectionSocketFactory(

sslcontext,newString[]{"TLSv1"},null,

R_COMPATIBLE_HOSTNAME_VERIFIER);

//设置httpclient的SSLSocketFactory

CloseableHttpClienthttpclient=()

.setSSLSocketFactory(sslsf)

.build();

3、C#使用证书

C#使用证书默认使用操作系统以导入的证书,即在操作系统上按装apiclient_cert.p12即可。

C#也可以忽略其他三个pem文件。

使用如下:

stringcert=@"R:apiclient_cert.p12";

stringpassword="10010000";

CertificateValidationCallback=new

RemoteCertificateValidationCallback(CheckValidationResult);

X509Certificatecer=newX509Certificate(cert,password);

HttpWebRequestwebrequest=(HttpWebRequest)(url);

(cer);

="post";

HttpWebResponsewebreponse=(HttpWebResponse)ponse();

Streamstream=ponseStream();

/*CheckValidationResult的定义*/

privatestaticboolCheckValidationResult(objectsender,X509Certificatecertificate,X509Chain

chain,SslPolicyErrorserrors)

{

if(errors==)

returntrue;

returnfalse;

}

注意:C#有一点需要注意,除了在代码中使用apiclient_cert.p12之外还需要将该证书导

入操作系统才能使用,1、代码中使用、;2、导入操作系统,二者缺一不可。.NET版本需要

大于2.0

更多推荐

clientkey