| ||||
| ||||
В мануале по JTLS 1.0.23 и 1.0.24 есть пример, как строить запрос к центру сертификации... KeyPairGenerator kg = KeyPairGenerator.getInstance("GOST3410DH"); KeyPair pair = kg.generateKeyPair(); PrivateKey privKey = pair.getPrivate(); PublicKey pubKey = pair.getPublic(); String keyAlg = "GOST3410DH"; boolean isServer = true; String certName = "CN=newCert, O=CryptoPro, C=RU"; String httpAddress = "http://www.cryptopro.ru/certsrv/"; // создание запроса на сертификат аутентификации сервера GostCertificateRequest request = new GostCertificateRequest(); request.init(keyAlg, isServer); request.setPublicKeyInfo(pubKey); request.encodeAndSign(privKey); // отправка запроса центру сертификации и получение от центра // сертификата в DER-кодировке byte[] encoded = request.getEncodedCert(httpAddress); // генерация X509-сертификата из закодированного представления сертификата CertificateFactory cf = CertificateFactory.getInstance("X509"); java.security.cert.Certificate cert = cf .generateCertificate(new ByteArrayInputStream(encoded)); String password = "password"; String alias = "newKey"; String certPath = "C:\\certificate.cer"; // файл, в который был предварительно // сохранен корневой сертификат центра FileInputStream fis = new FileInputStream(certPath); java.security.cert.Certificate certRoot = cf .generateCertificate(new BufferedInputStream(fis)); java.security.cert.Certificate[] certs = new java.security.cert.Certificate[2]; certs[0] = certRoot; certs[1] = cert; KeyStore hdImageStore = KeyStore.getInstance("HDImageStore"); hdImageStore.load(null, null); hdImageStore.setKeyEntry(alias, privKey, password.toCharArray(), certs); hdImageStore.store(null, null); При запуске на EncodeAndSign() валится сообщение java.lang.NullPointerException at ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest_certificationRequestInfo.encode(CertificationRequest_certificationRequestInfo.java:140) at com.objsys.asn1j.runtime.Asn1Type.encode(Asn1Type.java:44) at ru.CryptoPro.JCPRequest.GostCertificateRequest.encodeAndSign(Unknown Source) Если же добавить строку request.setSubjectInfo(certName); При попытке запустить пример, вместо поджписанного сертификата в DER-кодировке возвращается HTML-ка <HTML> <Head> <Meta HTTP-Equiv="Content-Type" Content="text/html; charset=UTF-8"> <Title>Службы сертификации</Title> </Head> <Body BgColor=#FFFFFF Link=#0000FF VLink=#0000FF ALink=#0000FF><Font ID=locPageFont Face="Arial"> <Table Border=0 CellSpacing=0 CellPadding=4 Width=100% BgColor=#008080> <TR> <TD><Font Color=#FFFFFF><LocID ID=locMSCertSrv><Font Face="Arial" Size=-1><B><I>Microsoft</I></B> Службы сертификации -- Test Center CRYPTO-PRO </Font></LocID></Font></TD> <TD ID=locHomeAlign Align=Right><A Href="/certsrv"><Font Color=#FFFFFF><LocID ID=locHomeLink><Font Face="Arial" Size=-1><B>Домой</B></Font></LocID></Font></A></TD> </TR> </Table> <P ID=locPageTitle> <B> Ошибка </B> <!-- Green HR --> Скажите пажалуйста на самом деле центр сертификации не работает? Или к нему надо обращаться по другому? | ||||
Ответы: | ||||
| ||||
Hello! Good Site! Thanks you! tmhemkkvtn | ||||