我正在开发一个iOS5应用程序,它将促进两个用户之间的移动支付.作为付款流程的一部分,发件人和收件人需要与服务器通信.服务器要求双方在连接时启动身份验证质询时显示其身份.
目前,我在代码中使用以下两种方法对证书过程进行了硬编码:
NSURLConnection委托didReceiveAuthenticationChallenge
(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge
{
NSLog(@"Authentication challenge");
// Load Certificate
NSString *path = [[NSBundle mainBundle] pathForResource:@"PKCS12" ofType:@"p12"];
NSData *p12data = [NSData dataWithContentsOfFile:path];
CFDataRef inP12data = (__bridge CFDataRef)p12data;
SecIdentityRef myIdentity;
SecTrustRef myTrust;
extractIdentityAndTrust(inP12data, &myIdentity, &myTrust);
SecCertificateRef myCertificate;
SecIdentityCopyCertificate(myIdentity, &myCertificate);
const void *certs[] = { myCertificate };
CFArrayRef certsArray = CFArrayCreate(NULL, certs, 1, NULL);
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:myIdentity certificates:(__bridge NSArray*)certsArray persistence:NSURLCredentialPersistencePermanent];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
Run Code Online (Sandbox Code Playgroud)
C方法extractIdentityAndTrust
OSStatus extractIdentityAndTrust(CFDataRef inP12data, SecIdentityRef *identity, SecTrustRef *trust)
{ …Run Code Online (Sandbox Code Playgroud) 我正在使用适用于 .NET 4.0 的 AWS 开发工具包 v2.3.44.0,并尝试生成预签名 URL 供客户端下载对象。所有对象都存储在 S3 存储桶中,并使用aws:kms服务器端加密方法进行加密。
我正在使用 的AmazonS3Client方法GetPreSignedURL来生成 URL。
我的AmazonS3Client对象是这样创建的:
var client = new AmazonS3Client(new AmazonS3Config
{
RegionEndpoint = RegionEndpoint.USEast1,
SignatureVersion = "4"
});
Run Code Online (Sandbox Code Playgroud)
我的GetPresignedUrlRequest对象是这样创建的:
var request = new GetPreSignedUrlRequest
{
BucketName = bucket,
Key = key,
Expires = expires,
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
};
Run Code Online (Sandbox Code Playgroud)
现在,当我运行时client.GetPreSignedURL(request),它会生成一个像这样的 URL(为了便于阅读和清理而格式化):
https://{bucket}.s3.amazonaws.com/{key}?AWSAccessKeyId={access key}
&Expires={timestamp}
&Signature=AWS4-HMAC-SHA256%20Credential%3D{access key}%2F20150626%2Fus-east-1%2Fs3%2Faws4_request%2C%20SignedHeaders%3Dhost%3Bx-amz-content-sha256%3Bx-amz-date%3Bx-amz-server-side-encryption%2C%20Signature%3D{signature}
Run Code Online (Sandbox Code Playgroud)
导航到此 URL 时,我收到错误的 XML 细分:SignatureDoesNotMatch。
该 URL 看起来与 Amazon 在 …