搜索
查看: 3178|回复: 4

使用openssl访问https网站

  [复制链接]

42

主题

128

帖子

927

积分

荣誉会员

Rank: 8Rank: 8

积分
927
发表于 2018-1-26 10:42:13 | 显示全部楼层 |阅读模式
本帖最后由 cad 于 2018-1-26 10:51 编辑

import wsock;
import wsock.err;

io.open()


::Openssl = ..raw.loadDll(
"ssleay32.dll","ssleay32.dll","cdecl")


if(! ..wsock.open() ){
   
error( ( ..wsock.err.lasterr() ),2 )
}

var hSocket= ..wsock.socket(0x2/*_AF_INET*/,0x1/*_SOCK_STREAM 建立流式套接口*/,6/*_IPPROTO_TCP*/ )
if( hSocket = _INVALID_SOCKET ){
    wsock.close()
//关闭wsock
    error("hSocket")
}

var service = ..wsock.sockaddr_in( "www.baidu.com",443 );
if(!service)
   
error("service")
service.sin_family = 0x2
/*_AF_INET*/

if ..wsock.connect( hSocket,service,..raw.sizeof(service)) =-1/*_SOCKET_ERROR*/ {  
   
error("connect")
}

// 初始化ssl
::Openssl.SSL_load_error_strings()              
::Openssl.SSL_library_init()                    


var sslCtx = ::Openssl.SSL_CTX_newP(  ::Openssl.SSLv23_client_methodP()  )
if !sslCtx
   
error("sslCtx")
   
var ssl = ::Openssl.SSL_newP(sslCtx)   
if !ssl
   
error("ssl")                                            

// 绑定ssl套接字
::Openssl.SSL_set_fd(ssl, hSocket)
// 建立ssl连接
::Openssl.SS