Interacción entre National Secret Client Client y Server Server


$ gmssl.exe s_client -debug -status -security_debug  -config ./openssl.cnf -port "9999" -CAfile "Root.crt" -cert "Client.crt"  -key "Client.key"
客户端证书可以不设置

$ gmssl.exe s_server -debug -status_verbose -security_debug  -config ./openssl.cnf -port "9999" -servername "gmservername" -CAfile "Root.crt" -cert "Server.crt"  -key "Server.key" -cert2 "Server1.crt" -key2 "Server1.key"
第二个证书cert2和第二个私钥key2可以不设置,如果要让第二个证书和私钥起作用需要设置-servername "随便设置一个名字",不过设置了 -servername参数后,有一个堆栈溢出的BUG,需要修改一下,具体修改内容如下:
static int security_callback_debug(const SSL *s, const SSL_CTX *ctx,
                                   int op, int bits, int nid,
                                   void *other, void *ex)
{
    security_debug_ex *sdb = ex;
    int rv = 1, show_bits = 1, cert_md = 0;//rv赋值1
    const char *nm;
    //rv = sdb->old_cb(s, ctx, op, bits, nid, other, ex);//注释掉这行
    //if (rv == 1 && sdb->verbose < 2)//注释掉这行
    //    return 1;//注释掉这行
    BIO_puts(sdb->out, "SecCB: ");




一、生成根证书
    1、生成私钥key
    $ gmssl.exe  ecparam -genkey -name sm2p256v1 -text -out Root.key -config  ./openssl.cnf
	
    2、生成签名请求
    $ gmssl.exe req -new -key Root.key -out Root.req -subj /C=CN/ST=ShangHai/L=SH/O=Root/OU=RootSign/CN=Root/[email protected] -config ./openssl.cnf
	
    3、生成根证书
    $ gmssl.exe x509 -req -sm3 -days 3650 -in Root.req -signkey Root.key -out Root.crt 
	
二、生成客户端证书
    1、生成私钥key
    $ gmssl.exe  ecparam -genkey -name sm2p256v1 -text -out Client.key -config  ./openssl.cnf
	
    2、生成客户证书请求
    $ gmssl.exe req -new -key Client.key -out Client.req -subj /C=CN/ST=ShangHai/L=GZ/O=Client/OU=ClientSign/CN=Client/[email protected]  -config  ./openssl.cnf
	
    3、签发证书
    $ gmssl.exe x509 -req -sm3 -days 3650 -in Client.req  -CA  Root.crt -CAkey Root.key -CAcreateserial  -out Client.crt

    4、证书验证
    $ gmssl.exe verify -CAfile Root.crt Client.crt

    5、证书转换成浏览器认识的格式.pfx
    $ gmssl.exe pkcs12 -export  -inkey Client.key -in Client.crt -out browser.pfx -passin  pass:xxx -passout pass:xxx
	
	
	
三、生成服务器证书
    1、生成私钥key
    $ gmssl.exe ecparam -genkey -name sm2p256v1 -text -out Server.key -config ./openssl.cnf

    2、证书请求
    $ gmssl.exe req -new -key Server.key -out Server.req -subj /C=CN/ST=ShangHai/L=GZ/O=Server/OU=ServerSign/CN=Server/[email protected] -config ./openssl.cnf

    3、签发证书
    $ gmssl.exe x509 -req -sm3 -days 3650 -in Server.req -CA Root.crt -CAkey Root.key -CAcreateserial -out Server.crt

    4、证书验证
    $ gmssl.exe verify -CAfile Root.crt Server.crt
	
	
	
	
	
    生成服务器的另外一个证书
    $ gmssl.exe ecparam -genkey -name sm2p256v1 -text -out Server1.key -config ./openssl.cnf
    $ gmssl.exe req -new -key Server1.key -out Server1.req -subj /C=CN/ST=ShangHai/L=GZ/O=Server/OU=ServerSign/CN=Server/[email protected] -config ./openssl.cnf
    $ gmssl.exe x509 -req -sm3 -days 3650 -in Server1.req -CA Root.crt -CAkey Root.key -CAcreateserial -out Server1.crt
    $ gmssl.exe verify -CAfile Root.crt Server1.crt
	
	

 

Supongo que te gusta

Origin blog.csdn.net/langeldep/article/details/111286090
Recomendado
Clasificación