2013-02-21 57 views
2

我有一個客戶端生成的CSR文件,我想從中提取公鑰。 他們提供了KeyStore Explorer軟件來檢查它。使用java中的Bouncy Castle從CSR文件中獲取公鑰CSR

但是我無法使用該工具從它提取公鑰。如何使用BC程序使用Java程序從CSR文件獲取公鑰?

CSR使用RSA 2048生成,使用SHA1和RSA。

從工具中,我可以看到公鑰的ASN1數據,但不是ASCII格式。 ATLEAST我怎麼使用ASN1數據得到使用BC

SEQUENCE 
{ 
    SEQUENCE 
    { 
     OBJECT IDENTIFIER=RSA encryption (1.2.840.113549.1.1.1) 
     NULL 
    } 
    BIT STRING= //BITS HERE 
} 

回答

2

ASCII格式的公鑰這取決於你所說的「ASCII格式」是什麼。但是,一般來說,你可以做這樣的事情:

// Read the CSR 
FileReader fileReader = new FileReader("/path/to/your.csr"); 
PemReader pemReader = new PemReader(fileReader); 

PKCS10CertificationRequest csr = 
    new PKCS10CertificationRequest(pemReader.readPemObject().getContent()); 

pemReader.close(); 
fileReader.close(); 

// Write the Public Key as a PEM-File 
StringWriter output = new StringWriter(); 
PemWriter pemWriter = new PemWriter(output); 

PemObject pkPemObject = new PemObject("PUBLIC KEY", 
    csr.getSubjectPublicKeyInfo().getEncoded()); 

pemWriter.writeObject(pkPemObject); 
pemWriter.close(); 

System.out.println(output.getBuffer()); 

// Extract the Public Key as "RSAKeyParameters" so you can use for 
// encryption/signing operations. 
RSAKeyParameters pubkey = 
    (RSAKeyParameters)PublicKeyFactory.createKey(csr.getSubjectPublicKeyInfo()); 

這是你會得到什麼:

-----BEGIN PUBLIC KEY----- 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxlRixVjOXAmUQ2zORREO 
VSQDQejyjWzT3bDznPltiPMwM3SOmPmZyrB8jF3iFvzdFge1QG2WdDj7PzmysXNL 
/1xRa0efWv8nURx1eV86hvU6ThNqY3WPyYYXSjTcN74uhGSJo7d5zG6JSL4Cj+l4 
RO+nh/5Pa8438ufS+9hXndKPFT2aub9roKysxWpsctpNoOIjfyxkLv9Z9sqxuggG 
nwYkwYmoDjPAQp2gRpCp7Hw5F6jSkA33NR5S/aPdyvzKZDbuoRdAl2sTubL1TLG3 
nC6tetGsmFRRkNiJjPSNtbXXtN6RB2eJL0epyaFFLksFBaL6nvYIgB1uqFroUY15 
2QIDAQAB 
-----END PUBLIC KEY----- 

我已與BC-提供的最新版本測試了這個。您需要「提供者」和「PKIX/PKCS ...」jar(否則您必須處理棄用的API調用)。

0

getSubjectPublicKeyInfo()不是availbale PKCS10CertificationRequest類。

+0

此答案已過時,請參閱bc源代碼: http://grepcode.com/file/repo1.maven.org/maven2/org.bouncycastle/bcpkix-jdk15on/1.52/org/bouncycastle/pkcs/PKCS10CertificationRequest.java #PKCS10CertificationRequest.getSubjectPublicKeyInfo%28%29 – jforge 2016-04-01 11:24:29

相關問題