Как я могу конвертировать PKCS8 в формат JWK, учитывая команды openssl ниже - PullRequest
0 голосов
/ 02 апреля 2020

Как я могу преобразовать PKCS8 в формат JWK, используя приведенные ниже команды openssl?

openssl genrsa -des3 -passout pass:foobar -out private_key_des3_with_password.pem 2048
openssl pkcs8 -topk8 -inform PEM -in private_key_des3_with_password.pem -outform PEM -out private_key_des3_with_password_pkcs8.pem -passin pass:foobar -passout pass:foobar
openssl rsa -in private_key_des3_with_password.pem -passin pass:foobar -outform PEM -pubout -out public_key_for_pk_des3_with_password.pem

Нужна помощь в преобразовании ключа PKCS8 в формат JWK, чтобы я мог загрузить ключи в Salesforce через "CertificatesAndKeysManagement" ".

Salesforce требует JWK для загрузки ключей и будет использоваться для шифрования JWT. Я также нашел статью для преобразования PKCS12 в JWT, но не знаю, как преодолеть разрыв между PKCS8 -> PKCS12 или PKCS8 -> JWK. Ищете какие-либо решения.

Код Salesforce выглядит следующим образом:

        Map<String, String> claims = new Map<String, String>{
            'claim'=> 'myClaims'
        };
        Auth.JWT jw = new Auth.JWT();
        jw.setAdditionalClaims(claims);
        jw.setValidityLength(60);
        Auth.JWS sig = new Auth.JWS(jw, 'mykey');
        return sig.getCompactSerialization();

Библиотека, которая будет проверять утверждение, требует формат PKCS8, но Salesforce требует формат JWK для шифрования

1 Ответ

0 голосов
/ 06 апреля 2020

Мне удалось выполнить sh задачу.

  1. Создать сертификат и импортировать его в Salesforce как JWT. Правильная статья
  2. Рецензированная эта статья для преобразования PKCS12 в PKCS8

Все вместе мы имеем следующие команды

openssl req -newkey rsa:2048 -nodes -keyout private_key.pem -x509 -days 365 -out certificate.pem
openssl x509 -outform der -in certificate.pem -out public_key.der
openssl x509 -in certificate.pem -pubkey > public_key.pem
keytool -importcert -file certificate.pem -keystore keystore.jks -alias mycertificate -storetype jks
openssl pkcs12 -inkey private_key.pem -in certificate.pem -export -out keystore.p12 -name mykey
keytool -importkeystore -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -destalias mykey -srcalias mykey
openssl pkcs12 -in keystore.p12 -nocerts -out certificatename.pem
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
openssl rsa -in certificatename.pk8 -passin pass:your_password -outform PEM -pubout -out public_key_for_pk_aes256_with_password.pem

Загрузите keystore.jks в Salesforce. предоставить ключ publi c другой команде (public_key_for_pk_aes256_with_password.pem)

...