首页 > 编程语言 >Go程序生成ssl证书

Go程序生成ssl证书

时间:2023-11-16 09:44:06浏览次数:35  
标签:rand pem x509 证书 crypto ssl time Go pk

package main

import (
	"crypto/rand"
	"crypto/rsa"
	"crypto/x509"
	"crypto/x509/pkix"
	"encoding/pem"
	"math/big"
	"net"
	"os"
	"time"
)

func main() {
	max := new(big.Int).Lsh(big.NewInt(1), 128)
	serialNumber, _ := rand.Int(rand.Reader, max)
	subject := pkix.Name{
		Organization:       []string{"test"},
		OrganizationalUnit: []string{"xxxx"},
		CommonName:         "test",
	}

	template := x509.Certificate{
		SerialNumber: serialNumber,
		Subject:      subject,
		NotBefore:    time.Now(),
		NotAfter:     time.Now().Add(365 * 24 * time.Hour),
		KeyUsage:     x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
		ExtKeyUsage:  []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
		IPAddresses:  []net.IP{net.ParseIP("127.0.0.1")},
	}

	pk, _ := rsa.GenerateKey(rand.Reader, 2048)

	derBytes, _ := x509.CreateCertificate(rand.Reader, &template, &template, &pk.PublicKey, pk)
	certOut, _ := os.Create("server.pem")
	pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes})
	certOut.Close()

	keyOut, _ := os.Create("server.key")
	pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(pk)})
	keyOut.Close()
}

标签:rand,pem,x509,证书,crypto,ssl,time,Go,pk
From: https://www.cnblogs.com/qcy-blog/p/17835494.html

相关文章

  • 从一道题来看看golang中的slice作为参数时的现象
    1、题目最近看群友在群里问一道关于golang中slice的题,题目如下:packagemainimport"fmt"funcmain(){ k:=[]int{1,2,3,4} k=append(k,5,6) fmt.Printf("k-->value:%v,add:%p,cap:%d\n",k,k,cap(k)) ap(k) fmt.Printf("k-->value......
  • Google 向中国开发者开放数百份 TensorFlow 资源
    Google的机器学习框架TensorFlow自2015年开源后,已然成为AI领域最受欢迎的框架。据统计,在广受欢迎的Python编程语言在线软件知识库PyPi上,TensorFlow的下载次数已超过90万,其中有15%来自中国。谷歌官方博客也表示,清华大学自然语言处理实验室的研究人员已通过Tens......
  • F5负载均衡系列教程三【SSL卸载实验,给定场景判断需要添加哪些profile】
    实验拓扑如下,实验环境搭建参考https://www.cnblogs.com/romin/p/17825779.html实验前提条件:1、拥有类似拓扑一样的实验环境;2、搭建简单的web服务器,比如上图的172.16.128.0、172.16.128.1、172.16.128.2三台服务器可以对外提供http和https服务实验初始配置:1、新建如下的pool......
  • 零基础机器学习数字识别MNIST(on going)
    本人之前并未涉及机器学习,但是在嵌入式中都会涉及视觉,借校内比赛从零学习,进行MNIST数字识别模型的搭建。随着学习进度更新,每天更新。2023-11-1521:38:55星期三一、环境搭建进行本模型的搭建,需要以下内容:Python环境:利用Anaconda管理开源机器学习平台:PyTorch或Tensorf......
  • django南京某高校校园外卖点餐系统-计算机毕业设计源码+LW文档
    摘 要系统根据现在南京某高校校园外卖点餐现有的管理模块进行开发和扩展,采用面向对象的开发的思想和结构化的开发方法对南京某高校校园外卖点餐的现状进行系统调查。采用结构化的分析设计,该方法要求结合一定的图表,在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”......
  • Microservice - Hexagonal Architecture
    Hexagonalarchitecture(https://alistair.cockburn.us/hexagonal-architecture/),proposedbyAlistairCockburnin2005,isanarchitecturalpatternthataimstobuild looselycoupledapplicationcomponentsthatcanbeconnectedviaportsand adapters.Inth......
  • windows系统使用终端和goland编辑器打包golang程序方法
    上一篇文章说了,windows系统,如何使用goland编辑器打包exe和linux程序,这篇文章再补充一下,使用终端和goland编辑器打包的对比情况。这里的终端可以是,cmd、WindowsPowerShell、MINGw64这里,我使用goland编辑器里面的Terminal,也就是WindowsPowerShelll来操作1、goland编辑器打......
  • mongodb表关联
     books表db.books.insert({_id:123,book_name:"HeadFirstJava",author:"KathySierra",publisher:"O'Reilly"}); publishers表db.publishers.insert({_id:123,publisherName:"O'Reilly",loca......
  • Django配置项
    django核心配置项 本文来自:https://www.cnblogs.com/rangger/p/9801247.htmlDjango的默认配置文件中,包含上百条配置项目,其中很多是我们‘一辈子’都不碰到或者不需要单独配置的,这些项目在需要的时候再去查手册。强调:配置的默认值不是在settings.py文件中!不要以为settings.p......
  • Goland推荐插件
    统一代码import风格代码缩略图-CodeGlance3代码缩略图,主要是一个文件里面代码太长的话,可以通过这个缩略图快速去到想要的代码块。因为是自己写的代码,有时候写多了,或者都是在改一份代码,通过缩略图里面的长短,可以分辨出来,某个方法在哪个地方。个人习惯就是通过直接点击缩略图上......