Написание кода для создания цифровой сертификатЦифровой сертификат добавления пароля к секретному ключу: Не удалось расшифровать файл: Не в PKCS формате # 12,
И при установке в браузере получаю ошибку
Не удалось декодировать файл. Либо это не в формате PKCS # 12, либо поврежден, либо введенный пароль неверен.
Но я не знаю, как добавить этот пароль для удовлетворения PKCS #12 format
. Как это сделать?
public KeyPair generateKeyPair() {
KeyPair pair = null;
try {
String password = "1234";
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
SecureRandom random = Utils.createFixedRandom();
keyGen.initialize(1024, random);
pair = keyGen.generateKeyPair();
PrivateKey privkey1 = pair.getPrivate();
PublicKey pubKey1 = pair.getPublic();
byte[] privateKeyBytes = pair.getPrivate().getEncoded();
byte[] encryptedPrivateKeyBytes = passwordEncrypt(
password.toCharArray(), privateKeyBytes);
//Problem might be here
Signature dsa = Signature.getInstance("SHA1withRSA");
dsa.initSign(privkey1);
Cipher cipher = Cipher
.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey1, random);
byte[] input = new byte[] { (byte) 0xbe, (byte) 0xef };
System.out.println("input : " + Utils.toHex(input));
byte[] cipherText = cipher.doFinal(input);
System.out.println("cipher: " + Utils.toHex(cipherText));
cipher.init(Cipher.DECRYPT_MODE, privkey1);
byte[] plainText = cipher.doFinal(cipherText);
System.out.println("plain : " + Utils.toHex(plainText));
} catch (Exception e) {
System.err.println("Caught exception " + e.toString());
}
return pair;
}
Сертификат создан успешно и прикреплен здесь.
Спасибо за любые подсказки.
Вы устанавливаете это как личный (клиентский) сертификат в своем браузере или в качестве доверенного сертификата сервера в своем браузере? Если это сертификат, которому вы доверяете, вам нужен только файл сертификата, а не PKCS12. , в Firefox, когда вы переходите на вкладку «Диспетчер сертификатов» и «Власть» и нажмите «Импорт», он ожидает сертификат. Если вы перейдете на вкладку «Ваши сертификаты», он ожидает P12, потому что P12 будет содержать закрытый ключ а также для проверки подлинности вашей личности на другом сервере. – gtrig
@g trig Спасибо за подробный комментарий gtrig. Я пытаюсь добиться того, что я предоставляю сертификат пользователю (клиенту), который имеет закрытый и открытый ключ. Он устанавливает этот ceritificate в своем браузере, и когда мое приложение запускается, я получаю это и использую для шифрования и дешифрования данных. Пожалуйста, дайте мне несколько советов. Я не могу двигаться с этого момента. –
@SURESH Похоже, вам действительно нужен секретный ключ. Я не совсем понимаю, как ваше приложение взаимодействует с хранилищем ключей браузера. Ваше приложение работает на его сервере (тот же сервер, на котором работает его браузер?) Или ваше приложение работает на другом сервере, к которому подключен его браузер? – gtrig