-
What version of Go and beego are you using (
bee version
)? v1.6.2 -
What operating system and processor architecture are you using (
go env
)? v1.14 -
What did you do? If possible, provide a recipe for reproducing the error. A complete runnable program is good. 目前在开启https之后,默认为双向认证,想实现单向认证,需要跳过证书校验。在TLS建连时,目前并没有相关参数来设置,用来跳过证书验证。 if err := server.ListenAndServeTLS(BConfig.Listen.HTTPSCertFile, BConfig.Listen.HTTPSKeyFile); err != nil { logs.Critical("ListenAndServeTLS: ", err, fmt.Sprintf("%d", os.Getpid())) time.Sleep(100 * time.Microsecond) endRunning <- true }
-
What did you expect to see? 如果在beego.Run()里面,可以增加相关参数的配置就完美了,如果要实现单向认证,我理解只需要设置能够设置server.Server.TLSConfig.InsecureSkipVerify这个变量
-
What did you see instead? 目前暂时还不支持
[beego]开启https后默认为双向认证,怎么实现单向认证
回答
目前我了解的是,的确没有配置来控制单向验证。InsecureSkipVerify
并不是用于控制单向验证的:
// InsecureSkipVerify controls whether a client verifies the
// server's certificate chain and host name.
// If InsecureSkipVerify is true, TLS accepts any certificate
// presented by the server and any host name in that certificate.
// In this mode, TLS is susceptible to man-in-the-middle attacks.
// This should be used only for testing.
@Qianggggg 难道不是客户端设置InsecureSkipVerify
或者你 用curl -k
就可以了么? 服务端不设置证书不就是http了?
如果你要在你的服务中对接第三方https服务,你需要设置客户端的InsecureSkipVerify
.
看来是我理解不到位,InsecureSkipVerify是客户端用于验证服务端的
确实是客户端设置InsecureSkipVerify
参数,之前我理解的为服务端。我现在是服务端不想验证客户端的证书
那你需要的是什么呢?
现在是作为服务端使用beego,开启https之后(不开启http),只支持双向认证,不支持单向
@Qianggggg 难道不是客户端去验证服务端的证书么,服务端验证客户端什么 ? 你客户端怎么访问服务端的api的?
现在问题点是beego一旦开启了https认证,默认开启双向认证,作为服务端,必须校验客户端证书,无法跳过
现在的beego https是双向认证的。也就是client先认证server,然后server认证client,这主要是为了防范中间人。@Qiangggg 的意思是只client验证server,但是server不验证client。说实在的,我突然觉得InsecureSkipVerify
说不定还真有效果。只是看注释,是跳过认证,我不太确定是不是双向认证全跳了。
@Qianggggg 可以试试么?把它设置为true。我也没搞过单向认证
我作为客户端验证过,这个是可以的,这个参数也写的很清楚,用作客户端跳过服务端的证书验证。服务端明天有空可以看看,目前着急上线,今天在中间挂了层nginx
现在的beego https是双向认证的。也就是client先认证server,然后server认证client,这主要是为了防范中间人。@Qiangggg 的意思是只client验证server,但是server不验证client。说实在的,我突然觉得InsecureSkipVerify说不定还真有效果。只是看注释,是跳过认证,我不太确定是不是双向认证全跳了。 @Qianggggg 可以试试么?把它设置为true。我也没搞过单向认证
那我理解了。其实就是在服务端开启,就不会校验客户端,在客户端,就不会校验服务端。