2017-10-22 9 views
0

サーバー上にファイルがあり、そのファイルを読み取ろうとしています。次のように 私のコードは次のとおりです。TWAPI TCL対象プリンシパル名が正しくありません

package require http 
package require twapi_crypto 
http::register https 443 [list ::twapi::tls_socket] 
set token [http::geturl "https://$ipaddress/filename"] 
set status [http::status $token] 
set data [http::data $token] 
put $data 

を、私は次のエラーを取得する:問題がどこにある

The target principal name is incorrect 
while executing 
"InitializeSecurityContext $Credentials $Handle $Target $Inattr 0 $Datarep $inbuflist 0" 
    (procedure "sspi_step" line 16) 
    invoked from within 
"sspi_step $SpiContext $data" 
    (procedure "_negotiate2" line 19) 
    invoked from within 
"_negotiate2 $chan" 
    (procedure "rethrow" line 2) 
    invoked from within 
"rethrow" 
    invoked from within 
"trap { 
_negotiate2 $chan 
} onerror {} { 
variable channels 
if {[info exists _channels($chan)]} { 
dict set _chan..." 
    (procedure "_negotiate line 3) 
    invoked from within 
"_negotiate $chan" 
    (procedure "::twapi::tls::_so_write_andler" line12) 
    invoked from within 
"::twapi::tls::_so_write_handle rc0" 

誰かが私をここにリダイレクトすることができますか?ブラウザに証明書を追加したにもかかわらず、ファイルにアクセスしようとしているときにIEから警告が表示され、[続行]をクリックする必要があります。これはWindowsマシン上で実行されています。

答えて

0

証明書のサブジェクトCommon Nameが、渡す予定のIPアドレスと一致していないことが予想されます。 HTTPS接続を開くときは、ホストの名前を使用する必要があります。

# Use the right hostname of course 
set hostname "securetesting.example.com" 

set token [http::geturl "https://$hostname/filename"] 

これその名前は、あなたがに接続したサーバーは、あなたがに接続するように求めてきましたものであるかどうかを決定するために使用されているため。それがなければ、安全な接続に絶対に誰でもとすることができ、それは有用な種類のセキュリティではありません!はい、これは、展開の一環としてDNSを正しく取得するために時間を費やす必要があることを意味します。はい、これは少し苦労します。通常はセキュリティがあります。

興味深いことに、サーバーが複数のサイトをホストできるため、暗号化されていない単純なHTTPでもホスト名を適切に指定する必要があります。あなたがそれを取り除く唯一の時間は、暗号化されていない状態で単一のサイトを提供するサーバーに話すときです。 Webは何年もの間、そのように実際には機能していません。

関連する問題