Как создать CSR с RSA-OAEP (opensaml) с помощью KeyTool

Я хорошо знаком с командой java keytool, но я не могу понять, как создать сертификат RSA с дополнением OAEP. Я пытаюсь создать его для защиты канала SAML. У меня такое чувство, что я неправильно понимаю, как работает указание подхода заполнения.

В идеале я получаю канал, подписанный с помощью RSA SHA256, зашифрованный с помощью AES256, а алгоритм передачи ключей имеет заполнение OAEP.

Как дополнительный вопрос, будет ли это работать с реализацией opensaml? Я не понимаю, почему бы и нет, поскольку это всего лишь действующий сертификат X509, насколько это необходимо.

keytool -genkey -alias myalias -keyalg RSA -keysize 512 -sigalg SHA256withRSA -keystore sample.jks -dname "CN=C, O=O, L=L, ST=S, C=US" -storepass changeit

person yd39    schedule 06.06.2013    source источник


Ответы (1)


Заполнение OAEP будет применяться к вашему зашифрованному тексту, а не к вашему сертификату.

Ваш сертификат должен использовать SHA256 из параметров keytool. Но я думаю, что для ваших параметров SAML DSig потребуется SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256.

Изменение примера OpenSaml здесь Я думаю, вы можете изменить параметры шифрования, чтобы использовать AES256 и РСАОАЭП с использованием:

Assertion assertion = createAssertion(); 

// Assume this contains a recipient's RSA public key
Credential keyEncryptionCredential = getKEKCredential();

EncryptionParameters encParams = new EncryptionParameters();
encParams.setAlgorithm(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256);

KeyEncryptionParameters kekParams = new KeyEncryptionParameters();
kekParams.setEncryptionCredential(keyEncryptionCredential);
kekParams.setAlgorithm(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP);
KeyInfoGeneratorFactory kigf =
    Configuration.getGlobalSecurityConfiguration()
    .getKeyInfoGeneratorManager().getDefaultManager()
    .getFactory(keyEncryptionCredential);
kekParams.setKeyInfoGenerator(kigf.newInstance());

Encrypter samlEncrypter = new Encrypter(encParams, kekParams);
samlEncrypter.setKeyPlacement(KeyPlacement.PEER);    
person pd40    schedule 08.06.2013