TWAPI TCL 目标主体名称不正确
TWAPI TCL The target principal name is incorrect
我在服务器上有一个文件,我正在尝试读取它。
我的代码如下:
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 机器上的 运行。
我猜测证书上的主题通用名称与您传入的 IP 地址不匹配,这是可以预料的。打开 HTTPS 连接时,您必须使用主机 名称。
# Use the right hostname of course
set hostname "securetesting.example.com"
set token [http::geturl "https://$hostname/filename"]
这是因为该名称用于确定您连接的服务器是否是您要求连接的服务器。否则,它可能是 与任何人 的安全连接,而这不是一种有用的安全措施!是的,这意味着您需要花一些时间在部署过程中正确设置 DNS,是的,这有点麻烦。安全通常是。
有趣的是,即使使用普通的未加密 HTTP,您也应该正确提供主机名,因为服务器可以托管多个站点。唯一一次你逃脱它是在与只服务于单个站点的服务器进行未加密通信时;多年来,网络并没有真正以这种方式工作。
我在服务器上有一个文件,我正在尝试读取它。 我的代码如下:
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 机器上的 运行。
我猜测证书上的主题通用名称与您传入的 IP 地址不匹配,这是可以预料的。打开 HTTPS 连接时,您必须使用主机 名称。
# Use the right hostname of course
set hostname "securetesting.example.com"
set token [http::geturl "https://$hostname/filename"]
这是因为该名称用于确定您连接的服务器是否是您要求连接的服务器。否则,它可能是 与任何人 的安全连接,而这不是一种有用的安全措施!是的,这意味着您需要花一些时间在部署过程中正确设置 DNS,是的,这有点麻烦。安全通常是。
有趣的是,即使使用普通的未加密 HTTP,您也应该正确提供主机名,因为服务器可以托管多个站点。唯一一次你逃脱它是在与只服务于单个站点的服务器进行未加密通信时;多年来,网络并没有真正以这种方式工作。