2016-11-04 38 views
1

Inno SetupインストーラからWebサービスのHTTPS接続を設定しようとしています。以前、私は次のことをやった:Inno SetupののGetSHA1OfFile方法を使用して、その拇印/ハッシュを取得しcertmgr Inno Setupのpfxから証明書の拇印を取得

  • を使用して、ローカルコンピューターの個人証明書にmakecert
  • インストールされた証明書と自己署名サーバー証明書を作成し

    netsh http add sslcertコマンドを使用して、しかし、今、私には、OpenSSLにmakecertからの切り替え、また、以前に生成されたCA証明書を導入し、私のサーバー証明書の発行者として働いていたポートに証明書を割り当て

  • 。私は今、何をやっている:

    1. OpenSSLを使用して、CA証明書からサーバ証明書を生成しますcertmgr
    2. を使用して、CA証明書をインストールします。サーバ証明書は、OpenSSLで証明書を生成するときに、問題がある、今CertUtil

    を使用して、PFXファイルをインストールしたOpenSSL

  • を使用して、実際の証明書と秘密鍵
  • コンバイン証明書とPFXファイル形式への秘密鍵で構成されていそれはsha1のハッシュがその拇印とは異なるので、私はもうこの目的のためにGetSHA1OfFileを使うことはできません。

    質問:私はInno Setupでプログラムハッシュを取得し、ポートに割り当てるにはどうすればいいですか?GetSHA1OfFileをこの目的に使用できない場合はどうしたらいいですか?

  • 答えて

    1

    certutil.exe -dump commandを使用し、出力を確認してください。

    あなたの指紋はどれですか、私はそれがCert Hash(sha1)というラベルのものだと思います。

    var 
        Key: string; 
        I: Integer; 
        TempFile: string; 
        Lines: TArrayOfString; 
        Hash: string; 
        ResultCode: Integer; 
        PfxFile: string; 
        Params: string; 
    begin 
        PfxFile := '...\my.pfx'; 
        TempFile := ExpandConstant('{tmp}\certdump.txt'); 
        Params := '/c certutil.exe -dump "' + PfxFile + '" > "' + TempFile + '"'; 
        if not Exec('cmd.exe', Params, '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then 
        begin 
        Log('Failed to run certificate dump'); 
        end 
        else 
        if not LoadStringsFromFile(TempFile, Lines) then 
        begin 
        Log('Failed to read certificate dump'); 
        end 
        else 
        begin 
        Key := 'Cert Hash(sha1):'; 
        Hash := ''; 
        for I := 0 to GetArrayLength(Lines) - 1 do 
        begin 
         if CompareText(Copy(Lines[I], 1, Length(Key)), Key) = 0 then 
         begin 
         Hash := Trim(Copy(Lines[I], Length(Key) + 1, Length(Lines[I]) - Length(Key))); 
         StringChange(Hash, ' ', ''); 
         end; 
        end; 
        DeleteFile(TempFile); 
    
        if Hash = '' then 
        begin 
         Log('Hash not found in certificate dump'); 
        end 
         else 
        begin 
         Log('Certificate hash: ' + Hash); 
        end; 
        end; 
    end; 
    
    関連する問題