2016-09-08 22 views
17

Tôi đang cố gắng giải nén tệp pkcs12 của mình trong ứng dụng Qt - nhưng không có may mắn. Tôi đang xây dựng một Ứng dụng Giao diện Điều khiển Qt (GUI bị tắt).QSslCertificate :: importPkcs12 không phân tích cú pháp tệp PFX

(Tôi đã theo hướng dẫn này: https://github.com/trueos/sysadm-ui-qt/blob/master/src-qt5/gui_client/SSLNotes.txt)

lệnh

pkcs12 tạo:

"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" 

Qt Code:

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; 

tay chiết xuất chủ chốt và các tập tin đã làm việc bằng cách sử dụng các lệnh openssl. Tin

Lỗi:

"Unimplemented Code." 

Bất kỳ ý tưởng?

+1

Bạn gặp phải lỗi gì? Bạn có thể mô tả "không may mắn" không? – vcsjones

+0

"Mã chưa triển khai" và "false" ... qDebug() << nhập đang trả về false .. –

+0

Bạn đang sử dụng phiên bản Qt nào? 'importPkcs12' được giới thiệu trong Qt 5.4. – vcsjones

Trả lời

0

Sau khi đập đầu vào tường với vài lần như vậy, tôi đã tìm thấy một lối tắt tốt.

Tôi nhập chứng chỉ vào máy Windows (đảm bảo rằng khóa riêng được đánh dấu là có thể xuất) và xác minh rằng đường dẫn chứng chỉ hợp lệ trong trình quản lý chứng chỉ. Nếu tôi cần nhập chứng chỉ, tôi thực hiện ở đây cho đến khi đường dẫn chứng chỉ được cấp là tốt. Một khi điều này được thực hiện, tôi tái xuất chứng chỉ và khóa riêng thành tệp PKCS12 mới, bao gồm chứng chỉ gốc và trung gian. Điều này tạo ra một tệp duy nhất có thể được nhập vào bộ định tuyến ASA hoặc IOS và hoạt động hoàn hảo vì mọi thứ mà đơn vị cần có trong một tệp.

Đảm bảo xóa chứng chỉ khỏi máy Windows khi bạn hoàn tất việc xuất tập hợp chứng chỉ.

Có lẽ liên kết này sẽ giúp bạn ra ngoài:

lấy từ: https://supportforums.cisco.com/discussion/12347971/failed-parse-or-verify-imported-certifiate-asa-5505-831

1

Hãy thử sử dụng Qt < 5.6 như Qt 5.5.

Trong Qt 5.6, phần cuối SSL mặc định đã được thay đổi từ OpenSSL thành Giao thông an toàn trên nền tảng Mac OS.

Sự cố này đã được điền vào dưới dạng lỗi: https://bugreports.qt.io/browse/QTBUG-56596

Các vấn đề liên quan