我利用OPENSSL库自己用SOCKET写了一个程序,连接到远端的一个HTTPS服务
(端口443)。连接时正确,也收到了SERVER端发过来的证书等。可是我不知怎么发我的公钥或者怎么让SERVER验证我是一个合法用户。我只是连接后发送“username\r\npassword\r\n"过去。
结果收到的信息如下:Got 471 chars:'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>401 Authorization Required</TITLE>
</HEAD><BODY>
<H1>Authorization Required</H1>
This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.<P>
<HR>
<ADDRESS>Apache/1.3.14 Server at 3dns.viewtoo.com Port 443</ADDRESS>
</BODY></HTML>它说我没有经过验证授权访问,可我不知道怎么让SERVER验证我,是不是还要发我的公钥和一个数字证书过去??谁做过这个方面的东西,望赐教!
(端口443)。连接时正确,也收到了SERVER端发过来的证书等。可是我不知怎么发我的公钥或者怎么让SERVER验证我是一个合法用户。我只是连接后发送“username\r\npassword\r\n"过去。
结果收到的信息如下:Got 471 chars:'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>401 Authorization Required</TITLE>
</HEAD><BODY>
<H1>Authorization Required</H1>
This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.<P>
<HR>
<ADDRESS>Apache/1.3.14 Server at 3dns.viewtoo.com Port 443</ADDRESS>
</BODY></HTML>它说我没有经过验证授权访问,可我不知道怎么让SERVER验证我,是不是还要发我的公钥和一个数字证书过去??谁做过这个方面的东西,望赐教!
SSL库那个验证的例子在哪个目录下?叫什么名字?我怎么找不到啊?
SSL库那个验证的例子在哪个目录下?叫什么名字?我怎么找不到啊?
https看作通过SSL承载的HTTP协议。当你建立好SSL连接后,就可以通过该连接发送HTTP请求了。你试试发送"GET / HTTP/1.0\r\n\r\n"
SSL一般好象只需验证服务器,客户端验证是可选项,但现在可能因为服务器要求,还需要验证我这个客户端。
我现在不知道怎么发送我的证书或公钥等信息给他(SERVER)去验证。所以服务器发回来的消息就说我不是得到验证的有访问权限的用户。
你能告诉我怎么做吗?不知你有没有这方面的例子?
Date: Fri, 28 Jun 2002 17:33:11 GMT
Server: Apache/1.3.14 (Unix) mod_fastcgi/2.2.10 mod_ssl/2.7.1 OpenSSL/0.9.6
WWW-Authenticate: Basic realm="3-DNS"
Connection: close
Content-Type: text/html; charset=iso-8859-1<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>401 Authorization Required</TITLE>
</HEAD><BODY>
<H1>Authorization Required</H1>
This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.<P>
<HR>
<ADDRESS>Apache/1.3.14 Server at 3dns.viewtoo.com Port 443</ADDRESS>
</BODY></HTML>可能还是没有验证通过,
能告诉我怎么去验证客户端吗?
因为访问这个HTTPS需要用户名和密码,那么我该什么时候以什么格式将我的用户名和密码发过去啊??
将你的用户名和密码组合成
"user:pass"
的格式,然后进行base64编码
发送的GET请求加上验证头Authorization: Basic base64编码后的字符串实际请求就成为
"GET / HTTP/1.0\r\n"
"Authorization: Basic xxx\r\n"//这里的xxx是用户名和密码编码后的字符串
"\r\n"