文件准备


下载文件并上传到服务器,这里使用centos 7.5

本文涉及的程序文件已打包可以直接下载。 点击下载

下载国密版openssl

  https://www.gmssl.cn/gmssl/index.jsp

如何生成nginx 需要的国密SM2 证书_nginx

下载稳定版nginx

   http://nginx.org/en/download.html

如何生成nginx 需要的国密SM2 证书_nginx_02

我反正是把gmssl包放 /usr/local 下,nginx 包放  /usr/local/src 下 ,到时候因人而异把

修改源码包中

/usr/local/src/nginx-1.24.0/auto/lib/openssl/conf 文件内容中

$OPENSSL/.openssl 路径为 $OPENSSL

如何生成nginx 需要的国密SM2 证书_html_03

编译nginx

./configure \ --without-http_gzip_module \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_v2_module \ --with-file-aio \ --with-openssl="/usr/local/gmssl" \ --with-cc-opt="-I/usr/local/gmssl/include" \ --with-ld-opt="-lm"

执行make&& make install 进行安装,默认会装到  /usr/local/nginx 下

下面是最恶心的步骤,就是生成国密证书什么了

 https://www.gmcrt.cn/gmcrt/index.jsp

如何生成nginx 需要的国密SM2 证书_服务器_04

提交后下载的证书文件压缩包内容如下,


如下四个上传到 服务器并在nginx中进行配置

如何生成nginx 需要的国密SM2 证书_国密sm2_05

自行上传服务器的目录好了,到时候配置指定就行

如何生成nginx 需要的国密SM2 证书_服务器_06

修改nginx配置文件,如下,证书先配置 签名证书和私钥,再配置加密证书和私钥,一共四份文件


server {
	listen  6080;
	listen  7080     ssl;
	server_name  localhost;
	ssl_protocols TLSv1  TLSv1.1 TLSv1.2;
	ssl_certificate      /usr/local/nginx/certs/sm2.test.sig.crt.pem;
	ssl_certificate_key  /usr/local/nginx/certs/sm2.test.sig.key.pem;
	ssl_certificate      /usr/local/nginx/certs/sm2.test.enc.crt.pem;
	ssl_certificate_key  /usr/local/nginx/certs/sm2.test.enc.key.pem;

	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA:DES-CBC3-SHA:ECC-SM4-CBC-SM3:ECC-SM4-GCM-SM3;
    ssl_verify_client off;

    location / {
        root   html;
        index  index.html index.htm;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

访问测试,chrome edge 等浏览器 都提示无法访问 如下:

如何生成nginx 需要的国密SM2 证书_服务器_07

下载国密浏览器,可以正常进行访问,显示国密字样的就表示没问题了

如何生成nginx 需要的国密SM2 证书_nginx_08