1

.cerファイルをダウンロードして任意のクライアントの信頼できるルートに自動的にインポートするコードとスクリプトで Web ページを作成しようとしています。

.cer例: Web サーバーのディレクトリからファイルをダウンロードし、それをクライアントの信頼できるルートに自動的にインポートする Java スクリプト。

すでに、クライアントのローカルで VBScript コードで試しましたが、今度は、閲覧ユーザーに通知せずに、Web ページで自動的にこの作業を行いたいと考えています。

4

2 に答える 2

0

こんにちは親愛なる私は多くのページとライブラリを検索して、javascript で seft 署名された ca をインポートする最良の方法を見つけ、2 つの方法を見つけます。

` `
>    <html> 
> <頭>
> <title>証明書インストール テスト 2</title>
> </head>
> <本文>
> <object id='CertEnroll' name='CertEnroll'></object>
> <object id='XEnroll' name='XEnroll'></object>

> <script language="javascript">

            var CERT_ENROLL_CLASSID = "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09";

            関数InstallCertChainCEnroll(pkcs7){
                CertEnroll.classid = CERT_ENROLL_CLASSID;
                var enrollObj = CertEnroll.CreateObject("X509Enrollment.CX509Enrollment");
                enrollObj.Initialize(1);
                for (var i=0;i<pkcs7.length;i++){
                    enrollObj.InstallResponse(4, pkcs7[i], 6, "");
                }
                true を返します。
            }

            document.write("<br>証明書をインストールしています...");
            試す{
                var pkcs7Chain = new Array();

                pkcs7チェーン[0] =                                                     
                "-----BEGIN CERTIFICATE-----" +
                "MIIDUzCCAjugAwIBAgIIMPQ+41XDpAAwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE" +
                "AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw" +
                ....
                "QCU+xDRP4/o/HHR5T0MEYI+bmuWfF6hbGai6r4VlLmnQHb0Rs5mGDN3eHj0lyMhT" +
                "NiNSvPMvQviVxEsjwBjpYhe53cI4bxIVOpqW8GvxUot/Yakdy5xC" +
                「-----エンド証明書-----」

                InstallCertChainCEnroll(pkcs7Chain);
            }キャッチ(例){
                document.write("<br>" + ex);
                document.write("<br>" + ex.message);
            }            
> </script>
> </body>
> </html>

` `

そして2つ:

` `
>    <html> 
> <頭>
> <title>証明書インストール テスト 2</title>
> </head>
> <本文>
> <object id='CertEnroll' name='CertEnroll'></object>
> <object id='XEnroll' name='XEnroll'></object>

> <script language="javascript">

            var CERT_ENROLL_CLASSID = "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09";

            関数InstallCertChainCEnroll(pkcs7){
                CertEnroll.classid = CERT_ENROLL_CLASSID;
                var enrollObj = CertEnroll.CreateObject("X509Enrollment.CX509Enrollment");
                enrollObj.Initialize(1);
                for (var i=0;i<pkcs7.length;i++){
                    enrollObj.InstallResponse(4, pkcs7[i], 6, "");
                }
                true を返します。
            }

            document.write("<br>証明書をインストールしています...");
            試す{
                var pkcs7Chain = new Array();

                pkcs7チェーン[0] =                                                     
                "-----BEGIN CERTIFICATE-----" +
                "MIIDUzCCAjugAwIBAgIIMPQ+41XDpAAwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE" +
                "AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw" +
                ....
                "QCU+xDRP4/o/HHR5T0MEYI+bmuWfF6hbGai6r4VlLmnQHb0Rs5mGDN3eHj0lyMhT" +
                "NiNSvPMvQviVxEsjwBjpYhe53cI4bxIVOpqW8GvxUot/Yakdy5xC" +
                「-----エンド証明書-----」

                InstallCertChainCEnroll(pkcs7Chain);
            }キャッチ(例){
                document.write("<br>" + ex);
                document.write("<br>" + ex.message);
            }            
> </script>
> </body>
> </html>

` `

しかし問題は、最初のコードを使用するとこのエラーが発生することです: メッセージ: CertEnroll::CX509EnrollmentWebClassFactory::CreateObject: ユーザーによって操作が取り消されました。0x800704c7 (WIN32: 1223) 参照してください: Microsoft msdn ブログ

そして、2番目のコードを使用するときは、cerファイルを中間認証局エリアにインストールします!!!!!!!! 何が起こっているのかというと、pkcs7Chain 変数のこの証明書はルート証明書であり、IstallResponse メソッドはこの人物を信頼されたルート証明機関にインストールする必要がありますが、中間証明機関領域にインストールされています.!? Web ページで javascript を使用して cmd を起動し、ca を中間ルートから信頼できるルートに変更 (置換) できますか? (ieでcmdを起動できます)

于 2012-12-24T16:33:42.427 に答える
0

信頼されたルート証明書を追加することは、非常に危険な操作です。「閲覧ユーザーに通知せずに」これを行う方法は絶対にありません。

于 2012-11-24T17:31:06.527 に答える