第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Bouncy Castle:使用現(xiàn)有 CA 簽署的證書

Bouncy Castle:使用現(xiàn)有 CA 簽署的證書

胡子哥哥 2021-06-27 12:55:59
我正在嘗試創(chuàng)建一個證書 (A),該證書為存儲在 p12 密鑰庫中的其他證書 (B) 簽名。此存儲的證書 (B) 已添加到我本地計算機的受信任證書庫中。證書 A 用于使用 bouncy Castle 1.52 library 對 pdf 文檔進行簽名,但我在簽名文檔中獲得的數(shù)字簽名無效。如果有人可以幫助我,我將解釋所做的步驟。首先,我從 p12 密鑰庫(B)創(chuàng)建一個 CSR:    private static PKCS10CertificationRequest generateCSR() {    PKCS10CertificationRequest csr = null;    try {        initCACert();        PKCS10CertificationRequestBuilder p10Builder = new JcaPKCS10CertificationRequestBuilder(                new X500Principal("CN=Requested Test Certificate"), CAcert.getPublicKey());        JcaContentSignerBuilder csBuilder = new JcaContentSignerBuilder("SHA256withRSA");        ContentSigner signer = csBuilder.build(CApk);        csr = p10Builder.build(signer);    } catch (Exception e) {        log.error(e);    }    return csr;}然后,使用此 CSR 生成證書 (A)。    private static Certificate signCSR() throws Exception {     PKCS10CertificationRequest csr = generateCSR();    AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find("SHA256withRSA");    AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);    X500Name issuer = X500Name.getInstance(CAcert.getSubjectX500Principal().getEncoded());    BigInteger serial = new BigInteger(32, new SecureRandom());    Calendar c = Calendar.getInstance();    c.add(Calendar.SECOND, -1);    Date from = c.getTime();    c.add(Calendar.YEAR, 5);    Date to = c.getTime();    X509v1CertificateBuilder certBuilder = new X509v1CertificateBuilder(issuer, serial, from, to, csr.getSubject(),            csr.getSubjectPublicKeyInfo());    ContentSigner signer = new BcRSAContentSignerBuilder(sigAlgId, digAlgId)            .build(PrivateKeyFactory.createKey(CApk.getEncoded()));    X509CertificateHolder holder = certBuilder.build(signer);    CertificateFactory certFactory = CertificateFactory.getInstance("X.509");    InputStream in = new ByteArrayInputStream(holder.getEncoded());    Certificate cert = certFactory.generateCertificate(in);    return cert;}
查看完整描述

2 回答

?
三國紛爭

TA貢獻1804條經(jīng)驗 獲得超7個贊

我已經(jīng)確定了問題:我正在以相反的順序構(gòu)建證書鏈。


我有這個訂單:


 certificateHolder = new X509CertificateHolder( cert.getEncoded() );

 certificateHolder = new X509CertificateHolder( CAcert.getEncoded() );

正確的順序是這樣的:


certificateHolder = new X509CertificateHolder( CAcert.getEncoded() );

certificateHolder = new X509CertificateHolder( cert.getEncoded() );

我希望有人能發(fā)現(xiàn)這些信息有用!


查看完整回答
反對 回復(fù) 2021-07-07
  • 2 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號