2017-11-21 21 views
0

私はSSL証明書を作成しています。私はこのコードを使用しました。ブラウザにssl証明書を統合します

バージョン:V3 件名:CNは= PTA 署名アルゴリズム:SHA1withRSA、OID = 1.2.840.113549.1.1.5

Key: Sun RSA public key, 1024 bits 
    modulus:8195747251668671703158252511484715904905685624305474923281348384506398192074853448780012281582290111563345678091608497553821391829971480670544649932159013 
    public exponent: 65537 
    Validity: From: Tue Nov 21 13:17:50 PKT 2017, 
       To: Wed Nov 21 13:17:50 PKT 2018 
    Issuer: CN=PTA 
    SerialNumber: 337317b9 

Certificate Extensions: 1 
[1]: ObjectId: 2.5.29.19 Criticality=false 
BasicConstraints: 
    CA:true 
    PathLen:2147483647 



    Algorithm: SHA1withRSA 
    Signature: 
0000: 1E 78 D7 F7 3A E6 E4 B5 D1 35 1C 2E FC 53 A2 85 .x..:....5...S.. 
0010: 61 BD F0 5A 72 D9 F7 11 23 75 80 7A 6E B0 E0 23 a..Zr...#u.zn..# 
0020: BE E4 5F DE F1 16 A7 F2 B7 21 BA E8 13 CB 5A 1D .._......!....Z. 
0030: A9 E4 45 ED 89 AE 87 1E 41 F4 47 B4 F7 EC C3 BE ..E.....A.G..... 
0040: E0 EA FC 1F C7 23 0C 8F 3A 84 8B 98 83 B4 7E C2 .....#..:....... 
0050: 6F 7A 5B AD F4 38 8E 00 10 A0 30 59 1F A3 09 49 oz[..8....0Y...I 
0060: 0E 42 D0 82 D9 7F BF AC 4D 93 BC C5 A4 DC 04 54 .B......M......T 
0070: 53 96 B8 7F AE BD 6D BD 94 E9 A8 A0 68 43 DB 30 S.....m.....hC.0 

, 

    Version: V3 
    Subject: CN=FastNet 
    Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5 

    Key: Sun RSA public key, 1024 bits 
    modulus: 161657090792555516695586185263084527366349509696556183715928445892937137032979680125036388699182414350510579635688759948023466646898520852479701338811401262991832177452096078586456052551108597559503898191394682820545429625150985217333874981200678761714744624590813783219900274086624205553792352169064622425721 
    public exponent: 65537 
    Validity: From: Tue Nov 21 13:17:50 PKT 2017, 
       To: Wed Nov 21 13:17:50 PKT 2018 
    Issuer: CN=PTA 
    SerialNumber: 38004cdc 
Certificate Extensions: 1 
[1]: ObjectId: 2.5.29.19 Criticality=false 
BasicConstraints:[ 
    CA:true 
    PathLen:2147483647 



    Algorithm: SHA1withRSA 
    Signature: 
0000: 24 94 B2 08 80 4C 79 5E 66 CC D4 A4 85 CD 28 9F $....Ly^f.....(. 
0010: 1B 80 E8 F9 04 F7 EA F3 78 AB 73 1A 03 59 ED 77 ........x.s..Y.w 
0020: A9 C9 2A 7B D1 A8 D5 88 72 00 7F 82 04 8D 34 22 ..*.....r.....4" 
0030: 20 E4 1F 4F ED CB 3A 34 CC 2D 85 91 5C 24 DF C5 ..O..:4.-..\$.. 
0040: 5A BE 08 3E 2E 64 87 E6 28 AA D5 FC 4C F6 FA 03 Z..>.d..(...L... 
0050: 96 56 26 E9 CE 1D 7C 60 1B 66 F7 75 39 69 27 76 .V&....`.f.u9i'v 
0060: 28 B5 88 8E 51 40 13 5C 94 05 CC 3F 9C 56 4E 27 ([email protected]\...?.VN' 
0070: D9 4A 87 FA 0F DE 7F 8C 0A 46 77 3B C0 25 57 8A .J.......Fw;.%W. 

, 

    Version: V3 
    Subject: CN=Neon 
    Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5 

    Key: Sun RSA public key, 1024 bits 
    modulus: 101561805201350912995790593526575119513151168158665152335461285366261351789268704157740436057113460399435904858902325860168207278136991174436556015812872375521572209765853124764558849092076972847896755938071801863244158743746567917559665570200348977261495405005075200724506808480138652079420561951562003264931 
    public exponent: 65537 
    Validity: From: Tue Nov 21 13:17:50 PKT 2017, 
       To: Wed Nov 21 13:17:50 PKT 2018 
    Issuer: CN=FastNet 
    SerialNumber: 5ee7fb6e 


    Algorithm: SHA1withRSA 
    Signature: 
0000: 2D 04 84 DF C6 57 BB 12 0B 34 EF 04 61 15 2E 16 -....W...4..a... 
0010: FB 71 F2 4C A0 B5 88 0B DD CC 10 7D AE C1 AB 54 .q.L...........T 
0020: 7A D4 90 D2 DF FD A7 16 E6 AF D4 CF 6F 44 90 7A z...........oD.z 
0030: C6 77 3F 26 30 9B A8 0A 6A 15 17 56 10 FA 64 D0 .w?&0...j..V..d. 
0040: 7E F3 39 98 CD 3F D4 03 4C 83 5B 64 73 26 22 B5 ..9..?..L.[ds&". 
0050: 0A DB 7B 9A 73 B1 4B 17 45 BF 49 28 F8 2D 01 EA ....s.K.E.I(.-.. 
0060: 89 78 8A 90 1A E5 00 96 15 59 B8 C9 3A CA 3F 35 .x.......Y..:.?5 
0070: DA D2 EE C1 96 B1 18 F5 ED F2 6A D0 15 8A 61 13 ..........j...a. 

私がしたい私は、出力はこの取得

public static void main(String[] args){ 
    try{ 
     //Generate ROOT certificate 
     CertAndKeyGen keyGen=new CertAndKeyGen("RSA","SHA1WithRSA",null); 
     keyGen.generate(1024); 
     PrivateKey rootPrivateKey=keyGen.getPrivateKey(); 

     X509Certificate rootCertificate = keyGen.getSelfCertificate(new X500Name("CN=PTA"), (long) 365 * 24 * 60 * 60); 

     //Generate intermediate certificate 
     CertAndKeyGen keyGen1=new CertAndKeyGen("RSA","SHA1WithRSA",null); 
     keyGen1.generate(1024); 
     PrivateKey middlePrivateKey=keyGen1.getPrivateKey(); 

     X509Certificate middleCertificate = keyGen1.getSelfCertificate(new X500Name("CN=FastNet"), (long) 365 * 24 * 60 * 60); 

     //Generate leaf certificate 
     CertAndKeyGen keyGen2=new CertAndKeyGen("RSA","SHA1WithRSA",null); 
     keyGen2.generate(1024); 
     PrivateKey topPrivateKey=keyGen2.getPrivateKey(); 

     X509Certificate topCertificate = keyGen2.getSelfCertificate(new X500Name("CN=Neon"), (long) 365 * 24 * 60 * 60); 

     rootCertificate = createSignedCertificate(rootCertificate,rootCertificate,rootPrivateKey); 
     middleCertificate = createSignedCertificate(middleCertificate,rootCertificate,rootPrivateKey); 
     topCertificate = createSignedCertificate(topCertificate,middleCertificate,middlePrivateKey); 

     X509Certificate[] chain = new X509Certificate[3]; 
     //chain[0]=topCertificate; 
     //chain[1]=middleCertificate; 
     //chain[2]=rootCertificate; 

     chain[2]=topCertificate; 
     chain[1]=middleCertificate; 
     chain[0]=rootCertificate; 

     System.out.println(Arrays.toString(chain)); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
} 

private static X509Certificate createSignedCertificate(X509Certificate cetrificate,X509Certificate issuerCertificate,PrivateKey issuerPrivateKey){ 
    try{ 
     Principal issuer = issuerCertificate.getSubjectDN(); 
     String issuerSigAlg = issuerCertificate.getSigAlgName(); 

     byte[] inCertBytes = cetrificate.getTBSCertificate(); 
     X509CertInfo info = new X509CertInfo(inCertBytes); 
     info.set(X509CertInfo.ISSUER, (X500Name) issuer); 

     //No need to add the BasicContraint for leaf cert 
     if(!cetrificate.getSubjectDN().getName().equals("CN=Neon")){ 
      CertificateExtensions exts=new CertificateExtensions(); 
      BasicConstraintsExtension bce = new BasicConstraintsExtension(true, -1); 
      exts.set(BasicConstraintsExtension.NAME,new BasicConstraintsExtension(false, bce.getExtensionValue())); 
      info.set(X509CertInfo.EXTENSIONS, exts); 
     } 

     X509CertImpl outCert = new X509CertImpl(info); 
     outCert.sign(issuerPrivateKey, issuerSigAlg); 

     return outCert; 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
    return null; 
} 

クロムブラウザに統合する。私はこのテキストを.cerまたは.crtに変換します。それは私にエラーを与えた。

+0

テキストの束を証明書に変換することはできません。正しい形式でなければなりません。 opensslを使用して証明書を生成するか、または既存のchromeをエクスポートしてテキストと比較してください。また、秘密鍵は保存しないので、ブラウザでインポートすることもできますが、証明書は無用です。 – user1516873

+1

@ user1516873 OPはサーバー上の秘密鍵で何かを行うだけです。 x509で信頼を手配する場合は、ブラウザ/ OSの信頼にインストールする証明書だけが必要です。 –

答えて

2

実際の証明書ではなく、証明書の概要を保存しています。

createSignedCertificateで生成された証明書ごとに、. getEncoded()に電話して、証明書のDERでエンコードされたバイトを取得する必要があります。

バイトを取得したら、root.cerという名前のファイルに各バイト配列を書き込みます。

+0

DERエンコードファイルを作成するにはどうしたらいいですか? –

+0

'.getEncoded()'から受け取ったバイト配列は、DERでエンコードされています。出力ストリームを準備し、バイトを書き込みます。 –