前書き: イントラネット環境に構築された 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++ のことは分からないが、どうしてもこのツールが必要な場合は、ここをクリックしてダウンロードできます (オリジナルの作成は簡単ではありませんが、自分の労働の成果を大切にしてください。)