当前位置: 首页 > news >正文

网站举报有奖平台打开百度

网站举报有奖平台,打开百度,做一个网站美工多少钱,wordpress添加顶部导航条本文为演示采用自签名证书一.生成证书通过openssl工具生成证书1.1 安装opensslmacos通过brew安装brew install openssl1.2 生成跟证书私钥openssl genrsa -out ca.key 40961.3 准备配置文件vim ca.conf内容如下[ req ] default_bits 4096 distinguished_name req_disti…本文为演示采用自签名证书一.生成证书通过openssl工具生成证书1.1 安装opensslmacos通过brew安装brew install openssl1.2 生成跟证书私钥openssl genrsa -out ca.key 40961.3 准备配置文件vim ca.conf内容如下[ req ] default_bits 4096 distinguished_name req_distinguished_name[ req_distinguished_name ] countryName Country Name (2 letter code) countryName_default CN stateOrProvinceName State or Province Name (full name) stateOrProvinceName_default JiangSu localityName Locality Name (eg, city) localityName_default NanJing organizationName Organization Name (eg, company) organizationName_default Sheld commonName Common Name (e.g. server FQDN or YOUR name) commonName_max 64 commonName_default Ted CA Test生成根证书签发申请文件(csr文件)openssl req -new -sha256 -out ca.csr -key ca.key -config ca.conf该命令含义如下req——执行证书签发命令-new——新证书签发请求-key——指定私钥路径-out——输出的csr文件的路径1.4 自签发根证书(cer文件)openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt该命令的含义如下x509——生成x509格式证书-req——输入csr文件-days——证书的有效期天-signkey——签发证书的私钥-in——要输入的csr文件-out——输出的cer证书文件1.5 生成服务端私钥openssl genrsa -out server.key 20481.6 准备配置文件得到server.confvim server.conf内容如下[ req ] default_bits 2048 distinguished_name req_distinguished_name req_extensions req_ext[ req_distinguished_name ] countryName Country Name (2 letter code) countryName_default CN stateOrProvinceName State or Province Name (full name) stateOrProvinceName_default JiangSu localityName Locality Name (eg, city) localityName_default NanJing organizationName Organization Name (eg, company) organizationName_default Sheld commonName Common Name (e.g. server FQDN or YOUR name) commonName_max 64 commonName_default server.com[ req_ext ] subjectAltName alt_names[alt_names] DNS.1 server.com生成服务端证书申请文件openssl req -new -sha256 -out server.csr -key server.key -config server.conf参考1.3输入服务端证书信息1.7 用CA证书签发服务端证书openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt -extensions req_ext -extfile server.conf这里有必要解释一下这几个参数-CA——指定CA证书的路径-CAkey——指定CA证书的私钥路径-CAserial——指定证书序列号文件的路径-CAcreateserial——表示创建证书序列号文件(即上方提到的serial文件)创建的序列号文件默认名称为-CA指定的证书名称后加上.srl后缀1.8 生成客户端私钥openssl genrsa -out client.key 20481.9 准备配置文件得到client.confvim client.conf内容如下[ req ] default_bits 2048 distinguished_name req_distinguished_name req_extensions req_ext[ req_distinguished_name ] countryName Country Name (2 letter code) countryName_default CN stateOrProvinceName State or Province Name (full name) stateOrProvinceName_default HeNan localityName Locality Name (eg, city) localityName_default AnYang organizationName Organization Name (eg, company) organizationName_default Sheld_client commonName Common Name (e.g. server FQDN or YOUR name) commonName_max 64 commonName_default server.com[ req_ext ] subjectAltName alt_names[alt_names] DNS.1 server.com DNS.2 localhost生成客户端证书申请文件openssl req -new -sha256 -out client.csr -key client.key -config client.conf1.10 用跟证书签发客户端证书openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -CAserial ca.srl -in client.csr -out client.crt -extensions req_ext -extfile client.conf需要注意的是上方签发服务端证书时已经使用-CAcreateserial生成过ca.srl文件因此这里不需要带上这个参数了。二. gin框架实现https服务端不需要验证客户端证书的示例2.1 项目引入gin框架go get -u github.com/gin-gonic/gin2.2 服务端代码package mainimport (github.com/gin-gonic/ginnet/http )func main() {router : gin.New()router.GET(/test, func(c *gin.Context) {c.JSON(200, gin.H{message: success,})})// 可以直接用//router.RunTLS(0.0.0.0:10679, ./certs/server.cer, ./certs/server.key)server : http.Server{Addr: 0.0.0.0:10679, Handler: router}_ server.ListenAndServeTLS(./certs/server.cer, ./certs/server.key) } 2.3 安全提示打开浏览器访问https://localhost:10679/test因为浏览器并不信任证书的颁发机构浏览器会有安全提示当然可以点高级直接强行访问页面同样可以返回结果很多文章也是到这里就结束了。强迫症的我还是要解决一下。2.4 给浏览器添加自己生成的CA证书本文选择firefox浏览器因为设置可以轻松添加信任CA证书。chrome则是直接掉起系统的证书没有找到友好的办法自己添加我们把CA证书(1.4节生成的ca.csr)添加到firefox证书颁发机构中去这样浏览器就信任我们自制的CA证书了。路径为设置-隐私与安全-查看证书-导入由于我们证书配置的common name是server.com因此需要修改本地hosts文件将下面文字添加到hosts文件中127.0.0.1 server.com再次访问https://server.com:10679/test不再阻止三.实现服务器和客户端双端验证3.1 服务端代码package mainimport (crypto/tlscrypto/x509fmtgithub.com/gin-gonic/ginio/ioutillognetnet/httposos/signalsyscall )var (caCert string ./certs/ca.crtserverCert string ./certs/server.crtserverKey string ./certs/server.key )func main() {router : gin.New()router.Use(gin.Logger())router.GET(/test, func(c *gin.Context) {c.JSON(200, gin.H{message: success,})})// 客户端CA证书certPool : x509.NewCertPool()ca, err : os.ReadFile(caCert)if err ! nil {fmt.Printf(load ca err: %s, err)return}if ok : certPool.AppendCertsFromPEM(ca); !ok {fmt.Printf(certpool append ca fail.)return}// 可以直接用注释的代码代替最后两行//router.RunTLS(0.0.0.0:10679, ./cert/server.cer, ./cert/server.key)server : http.Server{Addr: server.com:10679,Handler: router,TLSConfig: tls.Config{ClientAuth: tls.RequireAndVerifyClientCert,//这里一定要注意服务端设置ClientCAs用于服务端验证客户端证书客户端设置RootCAs用户客户端验证服务端证书。设置错误或者设置反了都会造成认证不通过。//RootCAs: certPool,ClientCAs: certPool,},}_ server.ListenAndServeTLS(serverCert, serverKey) }3.2 客户端代码package mainimport (crypto/tlscrypto/x509fmtio/ioutillognet/httpos )func main() {pool : x509.NewCertPool()caCrt, err : os.ReadFile(./certs/ca.crt)if err ! nil {log.Fatal(read ca.crt file error:, err.Error())}pool.AppendCertsFromPEM(caCrt)cliCrt, err : tls.LoadX509KeyPair(./certs/client.crt, ./certs/client.key)if err ! nil {log.Fatalln(LoadX509KeyPair error:, err.Error())}tr : http.Transport{TLSClientConfig: tls.Config{//这里一定要注意服务端设置ClientCAs用于服务端验证客户端证书客户端设置RootCAs用户客户端验证服务端证书。设置错误或者设置反了都会造成认证不通过。RootCAs: pool,//ClientCAs: pool,Certificates: []tls.Certificate{cliCrt},},}client : http.Client{Transport: tr}resp, err : client.Get(https://server.com:10679/test)if err ! nil {fmt.Printf(get failed. | err: %s\n, err)return}defer resp.Body.Close()body, err : ioutil.ReadAll(resp.Body)fmt.Println(string(body))} 四. 整理过程中遇到的bug4.1 tls: failed to verify certificate: x509: “server.com” certificate is not standards compliantremote error: tls: bad certificate这两个报错可能就是客户端或服务端设置参数ClientCAs、RootCAs错误有关。服务端设置ClientCAs里面保存客户端的CA证书Pool用于服务端验证客户端证书。客户端设置RootCAs里面保存服务端的CA证书Pool用户客户端验证服务端证书。设置错误或者设置反了都会造成认证不通过。这就属于知道就很简单解决但找不到错误就很崩溃本人因为这个小bug竟然熬了一夜说多了都是泪啊啊啊啊。。。4.2 use SANs or temporarily enable Common Name matching with GODEBUGx509ignoreCN0这个报错原因是生成证书没有开启SAN扩展go 1.15 版本开始废弃 CommonName因此推荐使用 SAN 证书。 这就是1.6、1.9两节配置文件最下面做的事情。重新把证书生成一下。当然自己生成的证书可以随便改如果线上证书出现这种情况我看有的说设置下环境变量GODEBUG 为 x509ignoreCN0不过我测试没有效果这个问题的解决要感谢下面这个博主我是看了这个帖子解决的问题。https://blog.csdn.net/weixin_40280629/article/details/1135633514.3 安全提示参考2.3解决办法4.4 证书commonName这个字段是比较重要的不要随便配置。服务端、客户端证书认证都会验证host name是否与其一致不一致会造成认证失败。这也是为什么要修改hosts并用server.com来访问睡觉睡觉。。。
http://www.w-s-a.com/news/442511/

相关文章:

  • 多语言外贸网站制作苏州建设网站微信公众号
  • 用wordpress建站学什么百度给企业做网站吗
  • 福建城乡建设网站做数码测评的网站
  • 东海县建设局网站wordpress 好用的主题
  • 网站图片设计制作制作一个门户网站需要多少钱
  • 虚拟币交易网站源码自己给网站做支付接口
  • 免费的seo网站在线 crm
  • 绍兴市高速公路建设指挥部网站网站主页和子页风格如何统一
  • 获取网站状态网站租金可以做办公费吗
  • 网站开发执行什么标准号wordpress主题 表白
  • 杭州网站推广与优化凡科网是免费的吗
  • 公司网站的重要性门户网站推广介绍方案
  • 做金融网站看那些素材江门网红打卡景点蓬江区
  • 饮食网站模板建网站中企动力优
  • 郑州 制造 网站东平企业建站公司
  • 天津设计师网站大全展示型网站搭建
  • 南宁网站建设 传导网站开发平台开发公司
  • 网站建设好处上海建设工程网站
  • 黑河哈尔滨网站建设太原网站制作定制开发
  • 建站做网站香河住房与建设局网站
  • 如何制造一个网站域名分类网站
  • 解析视频的网站怎么做凡科网快图
  • 企业网站优化问题接单app平台有哪些
  • 怎么做网站后缀识别符号才不会变什么是电子商务网站建设
  • 中山 五金 骏域网站建设专家专门用来制作网页的软件是什么
  • 怎么做刷东西的网站数据分析软件工具有哪些
  • 官方购物网站正品交易网站域名
  • lol网站建设seo 网站太小
  • 网站建设销售职责手机网站制作软件
  • 福州百度企业网站seo如何在电脑上登录wordpress