QT は簡単な SSL 証明書登録ツールを作成します

         前書き: イントラネット環境に構築された SSL 証明書に基づいて、ブラウザにそれを認識して信頼してもらいたい場合、非常に重要な手順は、ユーザーが証明書を自分の「信頼できるルート ディレクトリ」に手動でインポートすることを要求することです。しかし、非常に大規模なイントラネット環境にいる場合、当社の Web サイトにアクセスするユーザーは、https についてあまり知らない役割や立場にあるユーザーです。彼らはすぐに使えるものを望んでいるかもしれません。したがって、ルート証明書を「信頼されたルート ディレクトリ」に直接インポートするための exe ツールまたはドライバーを作成できます。

        上記の考えに基づいて、QT を使用して、自己署名ルート証明書をユーザーの信頼されたルート ディレクトリにインポートする比較的単純なツールを作成しました。これにより、ユーザーはワンクリックで独自の CA 組織を信頼できる CA 組織として追加できるようになります。これ以上の苦労はせずに、コアコードに直接進みましょう。

int main(int argc, char *argv[])
{
    UNREFERENCED_PARAMETER(argc);
    UNREFERENCED_PARAMETER(argv);

    unsigned char buffer[8192];
    CRYPT_DATA_BLOB key;
    key.cbData = 0;
    key.pbData = buffer;

    std::wstring wlpstr = this->filePath.toStdWString();
    LPCWSTR lpcwStr = wlpstr.c_str();
    HANDLE h = CreateFile(lpcwStr,FILE_GENERIC_READ, 0, NULL,  OPEN_EXISTING, 0, NULL);
    ReadFile(h, buffer, 8192, &key.cbData, NULL);

    CloseHandle(h);


    QString password=QString::fromLocal8Bit("xxxxxx");
    std::wstring ptr = password.toStdWString();
    LPCWSTR pStr = ptr.c_str();
    HCERTSTORE store = PFXImportCertStore(&key, pStr, 0);
    PCCERT_CONTEXT ctx = CertEnumCertificatesInStore(store, NULL);
    HCERTSTORE rootStore = CertOpenSystemStore(NULL, L"ROOT");
    bool isImport=CertAddCertificateContextToStore(rootStore, ctx, CERT_STORE_ADD_REPLACE_EXISTING, NULL);
    CertCloseStore(store, 0);
    CertCloseStore(rootStore, 0);
    QMessageBox::information(this, QString::fromLocal8Bit("成功"), QString::fromLocal8Bit("根证书注册成功"));
    return 0;
}

上記のコードはメイン関数のコードを示していますが、静的ライブラリ Crypt32.lib を使用する必要があることに注意してください。

効果のスクリーンショット:

         この時点で、あなたは賢明で、このツールの作成を独力で完了できると思います。コードや C++ のことは分からないが、どうしてもこのツールが必要な場合は、ここをクリックしてダウンロードできます (オリジナルの作成は簡単ではありません、自分の労働の成果を大切にしてください。)

おすすめ

転載: blog.csdn.net/qq_22824481/article/details/126428713