2015-02-06 7 views
0

Хотите создать файл CSR в java, когда пара частного/открытого ключа создается в HSM (Hardware Security Module).Генерация CSR с использованием java или BouncyCastle без использования закрытого ключа

На пробуя примеры в замок Bouncy, поколение КСО требует как закрытый ключ и общественных мере продолжения ввода генерации ключей происходит в HSM, я есть только открытый ключ и закрытый ключ притворство объект. Могу ли я генерировать CSR в Java без личного ключа?

Пожалуйста, найдите образец кода, который я пытался.

KeyPair pair = generateKeyPair(); 
    PKCS10CertificationRequestBuilder p10Builder = new JcaPKCS10CertificationRequestBuilder(
     new X500Principal("CN=Requested Test Certificate"), pair.getPublic()); 
    JcaContentSignerBuilder csBuilder = new JcaContentSignerBuilder("SHA256withRSA"); 
    ContentSigner signer = csBuilder.build(pair.getPrivate()); 
    PKCS10CertificationRequest csr = p10Builder.build(signer); 

Я довольно новичок в HSM, и любой ввод или ссылка будут полезны.

+0

Ну, это провалилось или что-то в этом роде? –

ответ

2

Вы можете создать CSR без значения закрытого ключа. Вам нужна ссылка на закрытый ключ, и ключ должен быть способен к подписанию. Ссылки на закрытые ключи - это просто специальные версии классов, которые реализуют PrivateKey. Они не содержат данные, а только ссылку. Вызов getEncoded или получение частного показателя ключа RSA, однако (обычно - это может зависеть от параметров генерации ключа и промежуточного программного обеспечения PKCS # 11) с исключением.

Способ может быть использован эти клавиши является просто предоставляя им к init методу вновь образованногоSignature экземпляра. Затем среда выполнения Java будет искать правильную реализацию SignatureSpi в правильном провайдере (тот, который подходит для вашего HSM). Это называется с задержкой выбор поставщика, поскольку он выполняет поиск только реализации после вызова метода init. Разумеется, в вашем случае это произойдет из поля зрения ContentSigner.

Данные секретного ключа не должны оставлять ваш HSM в любое время, если только они не будут завершены для резервного копирования или совместного использования между HSM.