使用openssl演练数字签名

使用openssl演练数字签名,第1张

概述以下代码摘自网上,设置一个server和client,client代码如下: package main import ( "fmt" "io/ioutil" &

以下代码摘自网上,设置一个server和clIEnt,clIEnt代码如下:

package mainimport (    "fmt"    io/IoUtilnet/http")func main() {    resp,err := http.Get(https://localhost:8081)    if err != nil {        fmt.Println(error:,err)        return    }    defer resp.Body.Close()    body,err := IoUtil.ReadAll(resp.Body)    fmt.Println(string(body))}

 

server代码如下:

 

crypto/tlscrypto/x509)func main() {    pool := x509.NewCertPool()    caCertPath := ca.crt    caCrt,1)"> IoUtil.Readfile(caCertPath)    Readfile err:    }    pool.AppendCertsFromPEM(caCrt)    tr := &http.Transport{        TLSClIEntConfig: &tls.Config{RootCAs: pool},}    clIEnt := &http.ClIEnt{Transport: tr}    resp,err := clIEnt.Get(Get error:(body))}

 

 生成密钥和数字签名方式如下:

openssl genrsa -out ca.key 2048       #生成CA私钥openssl req -x509 -new -nodes -key ca.key -subj "/CN=charlIE.com" -days 5000 -out ca.crt  #使用CA私钥生成CA公钥openssl genrsa -out server.key 2048    #生成server端私钥openssl req -new -key server.key -subj "/CN=charlIE.com" -out server.csr    #生成签名请求openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000    #生成CA签名的server端数字签名

注意:-subj subj选项表示证书拥有者的信息值,取代证书请求文件中的申请者的信息值。/cn必须是服务端的域名,使用IP可能会报如下错误,可以使用修改/etc/hosts的方式做域名映射

如谷歌的subj内容为:



server执行如下:

clIEnt执行如下:

 

 

可以使用如下方式验证证书有效性:

1.openssl s_server -msg -verify -tls1_2 -state -cert cert.cer -key ..\privkey -accept 18444

使用上面的命令开启一个ssl测试服务器

2.openssl s_clIEnt -msg -verify -tls1_2  -state -showcerts -cert cert.cer -key ..\privkey -connect localhost:18444

使用这个命令连接ssl测试服务器,如果连接成功会打印出证书和私钥的信息,然后输入任何字符都会在服务器端echo出来。

 查看CA的数字证书,可以看到CA为自签发的,签发者和使用者是同一人,此外在数字签名文件中可以看到CA的公钥信息,使用该公钥后续可以验证CA签发的文件的正确性


再看下server端的数字证书,该数字证书经过charlIE1.com的CA签发,可以看到签发者和使用者不一样。该证书中包含了server的公钥,用来后续与clIEnt端tls协商使用



以上信息也可以在windows的证书中查看:

 本次生成的密钥和代码参见:https://files.cnblogs.com/files/charlIEroro/%E5%8F%8C%E5%90%91%E8%AE%A4%E8%AF%81%E4%BB%A3%E7%A0%81%E5%92%8C%E8%AF%81%E4%B9%A6.rar参考:https://studygolang.com/articles/4461  总结

以上是内存溢出为你收集整理的使用openssl演练数字签名全部内容,希望文章能够帮你解决使用openssl演练数字签名所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1015401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存