ZBLOG

golang 编写生成 SSL 证书和私钥

下面是一个示例代码,可以使用 Golang 生成 SSL 证书和私钥:

  1. package main
  2. import (
  3. "crypto/rand"
  4. "crypto/rsa"
  5. "crypto/x509"
  6. "encoding/pem"
  7. "fmt"
  8. "math/big"
  9. "os"
  10. "time"
  11. )
  12. func main() {
  13. // 生成 RSA 密钥对
  14. privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
  15. if err != nil {
  16. fmt.Println("Failed to generate private key:", err)
  17. return
  18. }
  19. // 生成证书模板
  20. certTemplate := x509.Certificate{
  21. SerialNumber: big.NewInt(time.Now().Unix()),
  22. Subject: pkix.Name{CommonName: "example.com"},
  23. NotBefore: time.Now(),
  24. NotAfter: time.Now().AddDate(1, 0, 0),
  25. KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageKeyEncipherment,
  26. ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
  27. DNSNames: []string{"example.com", "www.example.com"},
  28. }
  29. // 将证书模板序列化为 DER 格式
  30. derBytes, err := x509.CreateCertificate(rand.Reader, &certTemplate, &certTemplate, &privateKey.PublicKey, privateKey)
  31. if err != nil {
  32. fmt.Println("Failed to create certificate:", err)
  33. return
  34. }
  35. // 创建 PEM 编码的证书文件
  36. certOut, err := os.Create("cert.pem")
  37. if err != nil {
  38. fmt.Println("Failed to create cert.pem:", err)
  39. return
  40. }
  41. pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes})
  42. certOut.Close()
  43. fmt.Println("Wrote cert.pem")
  44. // 创建 PEM 编码的私钥文件
  45. keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
  46. if err != nil {
  47. fmt.Println("Failed to open key.pem for writing:", err)
  48. return
  49. }
  50. pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privateKey)})
  51. keyOut.Close()
  52. fmt.Println("Wrote key.pem")
  53. }

运行上述代码后,会生成 cert.pemkey.pem 两个文件,其中 cert.pem 是 PEM 编码的证书,key.pem 是 PEM 编码的私钥。这些文件可以用于启用 SSL/TLS 加密连接。在实际生产环境中,建议使用更安全的加密算法和密钥长度。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=2207

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?