qt - partir - QSslCertificate:: importPkcs12 no puede analizar el archivo PFX
instalar certificado ssl windows 7 (2)
Estoy tratando de descomprimir mi archivo pkcs12 en mi aplicación Qt, pero no tengo suerte. Estoy construyendo una aplicación de consola Qt (GUI desactivada) .
(He seguido esta guía: https://github.com/trueos/sysadm-ui-qt/blob/master/src-qt5/gui_client/SSLNotes.txt )
Pkcs12 comandos de creación:
"openssl req -newkey rsa:2048 -nodes -keyout test_key.pem"
"openssl req -key test_key -new -x509 -out test_crt.crt"
"openssl pkcs12 -inkey test_key.pem -in test_crt.crt -export -passout stdin -out new.pfx"
Código Qt:
QString password="1234";
QFile pkcs("/Users/test/Desktop/certs/new.pfx");
pkcs.open(QFile::ReadOnly);
QSslKey key;
QSslCertificate cert;
QList<QSslCertificate> imported_certs;
static bool import=QSslCertificate::importPkcs12(&pkcs,&key,&cert,&imported_certs,QByteArray::fromStdString(password.toStdString()));
pkcs.close();
qDebug()<<import;
La extracción manual de la clave y el archivo han funcionado con los comandos de openssl.
Mensaje de error:
"Unimplemented Code."
¿Algunas ideas?
Después de golpear mi cabeza contra la pared con esto unas cuantas veces con este tipo de cosas, encontré un buen atajo.
Importe el certificado a una máquina con Windows (asegurándome de que la clave privada esté marcada como exportable) y verifico que la ruta del certificado sea válida en el administrador de certificados. Si necesito importar certificados, lo hago aquí hasta que la ruta del certificado emitido sea buena. Una vez hecho esto, vuelvo a exportar el certificado y la clave privada a un nuevo archivo PKCS12, incluidos los certificados raíz e intermediarios. Esto produce un solo archivo que se puede importar a un enrutador ASA o IOS y funciona perfectamente porque todo lo que necesita la unidad está presente en un archivo.
Asegúrese de eliminar el certificado de la máquina de Windows cuando haya terminado de exportar el conjunto de certificados.
Tal vez este enlace te ayude:
Trate de usar Qt <5.6 como Qt 5.5.
En el Qt 5.6, el backend SSL predeterminado se cambió de OpenSSL a Secure Transport en la plataforma Mac OS.
Este problema ya se resolvió como un error: https://bugreports.qt.io/browse/QTBUG-56596