golang是静态编译语言,代码写完分发的时候就一个可执行文件就可以了,但是如果在golang web框架gin里面用到了https的ssl 证书文件,即ssl.pem和ssl.key,分发的时候还得带着这两个证书文件,特别是如果要把程序交付给客户,你肯定不想把自己的证书文件一块给出去,下面就是如何把https数字证书打包进编译结果文件的方法:
1.将openssl数字证书文件内容变成可以编译连接的go资源文件
这里使用statik开源库实现
go get github.com/rakyll/statik
编译得到$GOROOT/bin/statick可执行文件
我的go项目结构是这样
/testproj/main.go
/testproj/res/ssl/ssl.key
/testproj/res/ssl/ssl.pem
在/testproj路径下执行
statik -src=./res
这样就会在/testproj下面生成一个statik目录,然后在这个目录内有一个statik.go
即项目结构变成下面这样
/testproj/main.go
/testproj/res/ssl/ssl.key
/testproj/res/ssl/ssl.pem
/testproj/statik/statik.go
这个statik.go文件就是ssl.key和ssl.pem的文件内容,将来我们编译连接这个文件就可以实现openssl证书的静态化编译链接了。
2.修改gin启动代码,变成下面这样
package main
import (
_ "testproj/statik"