小编jsc*_*jsc的帖子

如何在不强制断开连接的情况下使用 Go TLS 手动验证客户端证书?

我们正在 Golang 中构建一个服务器,它通过 SSL 打开一个 TCP 端口。

我们希望在客户端和服务器之间启用相互身份验证。但还要检测客户端何时在没有有效客户端证书的情况下尝试连接到我们的服务器,并通过 SSL 向他们返回错误消息 - 例如“检测到无效的客户端证书,请联系 ABC 公司寻求帮助”。

需要明确的是:我们坚持要求通过 SSL 将数据返回给无法与服务器进行相互验证的客户端。我们不想断开它们。

我们采用的方法是使用 TLS 的“VerifyClientCertIfGiven”配置设置。

因此,如果提供了客户端证书,我们将对其进行验证,但如果没有,我们仍然允许建立 SSL 连接。

我们怎样才能知道:

  1. 是否提供了客户端证书?
  2. 如果是,它是否通过了 TLS 执行的相互身份验证检查?

下面是我们服务器的代码:

package main

import(
  "fmt"
  "io/ioutil"
  "crypto/tls"
  "crypto/x509"
)

func main(){
  // Configure SSL
  cert, err := tls.LoadX509KeyPair("server.crt", "server.key")
  caCert, _ := ioutil.ReadFile("client.crt")
  caCertPool := x509.NewCertPool()
  caCertPool.AppendCertsFromPEM(caCert)
  config := &tls.Config{
    Certificates: []tls.Certificate{cert},
    ClientCAs: caCertPool,
    ClientAuth: tls.VerifyClientCertIfGiven,
  }
  config.BuildNameToCertificate()
  // Listen on port 443
  listener, _ := tls.Listen("tcp", ":443", config)
  defer listener.Close()
  // …
Run Code Online (Sandbox Code Playgroud)

ssl go tls1.2

6
推荐指数
1
解决办法
2817
查看次数

当base64编码字节数组时,为什么会出现"索引超出范围"错误?

将字节数组编码为base64字节数组时,以下代码会产生运行时index out of range错误.怎么解决这个问题?

package main

import (
    "fmt"
    "encoding/base64"
)

func main() {
    data := []byte("string of data")
    var encodedData []byte
    base64.StdEncoding.Encode(encodedData, data)
    fmt.Println(encodedData)
}
Run Code Online (Sandbox Code Playgroud)

这里的游乐场

arrays base64 go

5
推荐指数
1
解决办法
1660
查看次数

如何从任意文件夹生成Go文档?

我有一个包含名为 的文件的包test,位于文件夹中~/my_packages/test

我的 GoPath 设置为~/go,即

$ echo $GOPATH
~/go
Run Code Online (Sandbox Code Playgroud)

需要传递哪些参数才能godoc查看包的文件文档test

我努力了:

  • godoc -goroot=~/my_packages test
    • 结果:cannot find package "." in: /src/test
  • godoc -goroot=~/my_packages ./test
    • 结果:cannot find package "." in: /target
  • export GOPATH=$GOPATH:~/my_packages; godoc test
    • 结果:cannot find package "." in: /src/test

我可以启动 godoc HTTP 服务器并查看该文件夹,但只有代码可见。预期的包文档不可用。

godoc -http=:6060 -goroot=/full/path/to/my_packages
Run Code Online (Sandbox Code Playgroud)

godoc可以运行什么命令来为任何目录中的文件夹中的包生成文档?

预先感谢您的帮助!

go

5
推荐指数
0
解决办法
1422
查看次数

div垂直对齐不起作用

搜索了各种 文章之后,我无法vertical-align: middle在div中工作。

所期望的结果是什么,都float: left存在于div属性中: ________ _______ | | | | | lorem | | ipsum | |________| |_______|

.tile {
  float: left;
  width: 50%;
  min-height: 50px;
  text-align: center;
  background-color: blue;
}
#nav {
  display: table;
}
.middle {
  display: table-cell;
  vertical-align: middle;
  background-color: red;
}
Run Code Online (Sandbox Code Playgroud)
<div class="tile" id="nav">
  <div class="tile middle">lorem</div>
  <div class="tile">ipsum</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?除非像本文中所述是不可能的。

html css vertical-alignment

2
推荐指数
1
解决办法
4212
查看次数

标签 统计

go ×3

arrays ×1

base64 ×1

css ×1

html ×1

ssl ×1

tls1.2 ×1

vertical-alignment ×1