Я использую клиент SCEP для регистрации сертификатов на сервере NDES. Если OpenSSL не в режиме FIPS - все работает нормально.
В режиме FIPS я получаю следующую ошибку:
pkcs7_unwrap():pkcs7.c:708] error decrypting inner PKCS#7
139968442623728:error:060A60A3:digital envelope routines:FIPS_CIPHERINIT:disabled for fips:fips_enc.c:142:
139968442623728:error:21072077:PKCS7 routines:PKCS7_decrypt:decrypt error:pk7_smime.c:557:
Это потому, что сервер NDES использует алгоритм DES для шифрования возвращенного пакета PKCS # 7. Я использовал следующий код отладки:
/* Copy enveloped data from PKCS#7 */
bytes = BIO_read(pkcs7bio, buffer, sizeof(buffer));
BIO_write(outbio, buffer, bytes);
p7enc = d2i_PKCS7_bio(outbio, NULL);
/* Get encryption PKCS#7 algorithm */
enc_alg=p7enc->d.enveloped->enc_data->algorithm;
evp_cipher=EVP_get_cipherbyobj(enc_alg->algorithm);
printf("evp_cipher->nid = %d\n", evp_cipher->nid);
В последней строке всегда печатается:
evp_cipher-> nid = 31
определено в openssl-1.0.1c / include / openssl / objects.h
#define SN_des_cbc "DES-CBC"
#define LN_des_cbc "des-cbc"
#define NID_des_cbc 31
Я использую алгоритм 3DES для шифрования запросов PKCS7 в моем коде (pscep.enc_alg = (EVP_CIPHER *) EVP_des_ede3_cbc ()), и сервер NDES принимает эти запросы, но всегда возвращает ответ, зашифрованный с помощью DES.
Могу ли я настроить сервер Wndows NDES для использования алгоритма Triple DES (3DES) для шифрования ответов PKCS # 7?
Я получил ответ от службы поддержки Microsoft (Дайана Чжан), что это невозможно: http://social.technet.microsoft.com/Forums/en-US/winserversecurity/thread/83a6680c-6610-4cf7-a4fa-1bc63f32a8be
After in-depth research, want to let you know:
The content encryption algorithm for P7 in hardcoded to DES(in CBC mode).
Regards,
Diana