1

iPhone开发中有没有办法从我的RSA公钥(seckeyref)生成X509证书

或者有谁知道我如何将我的公钥传输到java服务器?

谢谢帕特里克

4

1 回答 1

0

不明白你的意思。如果您的意思是 RSA 是一个完整的证书,那么:

SecCertificateRef cert = ...
CFDataRef der = SecCertificateCopyData(cert);

const unsigned char * ptr = CFDataGetBytePtr(der);
int len = CFDataGetLength(der);

// now write len bytes from ptr to a file, put it in a POST request
// to the server, etc.

您可以将其写成二进制文件(作为 DER 文件)或转换为 base64 作为 PEM 证书。Java 会喜欢 DER 文件/格式并接受它

FileInputStream certificateStream = new FileInputStream(aboveDerFileOrPost);
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
java.security.cert.Certificate[] certs = {};
certs = certificateFactory.generateCertificates(certificateStream).toArray();
certificateStream.close();

某种方式。如果你的意思是你有一个原始的 RSA 公钥——你现在想添加 X509 的东西来使它成为一个证书然后签名——那就是相当多的工作。AFAIK 需要使用 openssl(或者至少我是这样做的)来创建 x509 结构;然后使用 SecTransformExecute() 或 SecKeyRawSign() 进行签名,以免违反密钥库上的安全规则。

于 2012-07-18T14:31:01.947 回答