From e048df402df02d2c01b7881ac2586bf059936a30 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 14 Aug 2026 11:29:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8C=85=E4=B8=BA=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 8 +++ Dockerfile | 71 +++++++++++++++++++ nginx.conf | 128 ++++++++++++++++++++++++++++++++++ test/config/certs/rsa.dev.csr | 17 +++++ test/config/certs/rsa.dev.key | 27 +++++++ test/config/certs/rsa.dev.pem | 21 ++++++ test/config/certs/sm2.enc.key | 8 +++ test/config/certs/sm2.enc.pem | 13 ++++ test/config/certs/sm2.sig.key | 8 +++ test/config/certs/sm2.sig.pem | 13 ++++ test/config/http/hsm.conf | 111 +++++++++++++++++++++++++++++ test/logs/access.log | 9 +++ test/logs/error.log | 24 +++++++ test/logs/nginx.pid | 1 + test/logs/stream-access.log | 0 test/logs/stream-error.log | 0 test/start.sh | 10 +++ 17 files changed, 469 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 nginx.conf create mode 100644 test/config/certs/rsa.dev.csr create mode 100644 test/config/certs/rsa.dev.key create mode 100644 test/config/certs/rsa.dev.pem create mode 100644 test/config/certs/sm2.enc.key create mode 100644 test/config/certs/sm2.enc.pem create mode 100644 test/config/certs/sm2.sig.key create mode 100644 test/config/certs/sm2.sig.pem create mode 100644 test/config/http/hsm.conf create mode 100644 test/logs/access.log create mode 100644 test/logs/error.log create mode 100644 test/logs/nginx.pid create mode 100644 test/logs/stream-access.log create mode 100644 test/logs/stream-error.log create mode 100644 test/start.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..707c85c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +Tongsuo-8.4.0/ +nginx-1.26.2/ +.git/ +docs/ +java-client/ +test/ +push.sh +commit.sh \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..82f75c0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,71 @@ +# gateway:v2 - GMSSL Gateway (Nginx 1.26.2 + Tongsuo 8.4.0) +# Builds TongsuoSSL (static) and links Nginx against it to provide SM2/SM3/SM4 GMSSL support. +FROM ubuntu:24.04 AS build + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + libpcre2-dev \ + zlib1g-dev \ + libcrypt-dev \ + perl \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /build + +# ---- TongsuoSSL 8.4.0 ---- +COPY 8.4.0.tar.gz /build/ +RUN tar -xzf 8.4.0.tar.gz +WORKDIR /build/Tongsuo-8.4.0 +RUN ./config --prefix=/opt/tongsuo-8.4.0 --libdir=lib64 no-shared no-zlib no-threads enable-ntls \ + && make -j$(nproc) \ + && make install_sw + +# ---- Nginx 1.26.2 (linked against Tongsuo) ---- +WORKDIR /build +COPY nginx-1.26.2.tar.gz /build/ +RUN tar -xzf nginx-1.26.2.tar.gz +WORKDIR /build/nginx-1.26.2 +RUN ./configure \ + --prefix=/usr/local/nginx \ + --with-http_ssl_module \ + --with-stream \ + --with-stream_ssl_module \ + --with-http_v2_module \ + --with-http_realip_module \ + --with-cc-opt="-I/opt/tongsuo-8.4.0/include" \ + --with-ld-opt="-L/opt/tongsuo-8.4.0/lib64 -lssl -lcrypto -ldl -lpthread" \ + && make -j$(nproc) \ + && make install + +# ---- Runtime ---- +FROM ubuntu:24.04 +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y --no-install-recommends \ + libpcre2-8-0 \ + zlib1g \ + libcrypt1 \ + ca-certificates \ + curl \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /usr/local/nginx/conf/man/http \ + /usr/local/nginx/conf/man/stream \ + /usr/local/nginx/logs \ + /app + +COPY --from=build /usr/local/nginx /usr/local/nginx + +# Built-in main nginx config (project root nginx.conf) +COPY nginx.conf /usr/local/nginx/conf/nginx.conf + +# The config directory is mounted by the test startup script to /usr/local/nginx/conf/man. +# Pre-create a placeholder http include so the server starts when nothing is mounted. +RUN printf '# empty\n' > /usr/local/nginx/conf/man/http/.keep \ + && printf '# empty\n' > /usr/local/nginx/conf/man/stream/.keep + +EXPOSE 80 443 8443 + +CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"] diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..e3df2d1 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,128 @@ + +#user nobody; +worker_processes 4; + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +#pid logs/nginx.pid; + + +events { + worker_connections 2048; +} + + +stream { + log_format basic '$remote_addr [$time_local] ' + '$protocol $status $bytes_sent $bytes_received ' + '$session_time'; + access_log logs/stream-access.log basic buffer=32k; + error_log logs/stream-error.log debug; + include /usr/local/nginx/conf/man/stream/*.conf; +} + +http { + server_tokens off; + include mime.types; + default_type application/octet-stream; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + include /usr/local/nginx/conf/man/http/*.conf; +# server { +# listen 8080; +# server_name localhost; +# +# #charset koi8-r; +# root /usr/local/nginx/html; +# +# #access_log logs/host.access.log main; +# +# location / { +# root html; +# index index.html index.htm; +# } +# +# #error_page 404 /404.html; +# +# # redirect server error pages to the static page /50x.html +# # +# error_page 500 502 503 504 /50x.html; +# location = /50x.html { +# root html; +# } +# +# # proxy the PHP scripts to Apache listening on 127.0.0.1:80 +# # +# #location ~ \.php$ { +# # proxy_pass http://127.0.0.1; +# #} +# +# # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 +# # +# #location ~ \.php$ { +# # root html; +# # fastcgi_pass 127.0.0.1:9000; +# # fastcgi_index index.php; +# # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; +# # include fastcgi_params; +# #} +# +# # deny access to .htaccess files, if Apache's document root +# # concurs with nginx's one +# # +# #location ~ /\.ht { +# # deny all; +# #} +# } + + + # another virtual host using mix of IP-, name-, and port-based configuration + # + #server { + # listen 8000; + # listen somename:8080; + # server_name somename alias another.alias; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + + + # HTTPS server + # + #server { + # listen 443 ssl; + # server_name localhost; + + # ssl_certificate cert.pem; + # ssl_certificate_key cert.key; + + # ssl_session_cache shared:SSL:1m; + # ssl_session_timeout 5m; + + # ssl_ciphers HIGH:!aNULL:!MD5; + # ssl_prefer_server_ciphers on; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + +} diff --git a/test/config/certs/rsa.dev.csr b/test/config/certs/rsa.dev.csr new file mode 100644 index 0000000..0bb85f5 --- /dev/null +++ b/test/config/certs/rsa.dev.csr @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICuTCCAaECAQAwdDELMAkGA1UEBhMCQ04xETAPBgNVBAgMCFpoZWppYW5nMREw +DwYDVQQHDAhIYW5nemhvdTEQMA4GA1UECgwHU3VueWFyZDEPMA0GA1UECwwGRGV2 +aWNlMRwwGgYDVQQDDBNTdW55YXJkIERldmljZSBDZXJ0MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAqWq6BPVRQNRc8ofhnLWhqJiPHmEQKhVzFXfZOzVj +W0pNn/W1uh8iGwD9KDirmKwyfZH4E3QN4SwK1ia1N2zqSzp5y8OYHg6UUBjkJdhR +UdzoNQEmMFrr5M9g9OYA4qvUo6FQZORrgU4A/VZQtq3wToRea6WziIYhtnrs/IS6 +HTP8UaaiO/V3x8iFesJpBJOeZwSOo/Ut0cJjLtP1yiddYJ5Ui9sN60QplWH3Fhjy +guOmYxfAumwa3pAhJNdKvVMDFczr4l4RqVzPKomBUCbHjeuC/6LpdXc2efqc4tsq +C+PhIScm11pZYE/hOKiBB2v7Sbxl6g4oFc8EG2crczqIlwIDAQABoAAwDQYJKoZI +hvcNAQELBQADggEBAJKJUyxa6AR8J9BlqxZubT7kF7yxp1uoCyBcztKbaIo85sDl +tIDppgfAgKBPeJb2i2Ayfzr7+kI+XPmvzNYqeAd3mXzEG9hxjVajWhduBcVTV302 +lwdayXhnNw9bJcwZREDgJo2xa12s4kRzjPPP3x0zj9ZTq+wGsk4x92lVfrySDtuW +fRbV/tS39Ff/ZpFiuDYuhEMecg/00cEfjvxpbNt5Yea558fmg+XE6qDNkp1bdjoJ +IfZyOy+/+Sl1e6hiDOaNdnaDU4SDMPlhl6R8pBNtdgSzZUcRMgx6WZlBCNLUpQyL +z5rOfSsdnHfh3aDAjS2JIeovcuDWu5sC48TSbGI= +-----END CERTIFICATE REQUEST----- diff --git a/test/config/certs/rsa.dev.key b/test/config/certs/rsa.dev.key new file mode 100644 index 0000000..398b9f0 --- /dev/null +++ b/test/config/certs/rsa.dev.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEA2ydFXnDr/7P4hgec6gr+AZhlz1/XDfqzI7MyyUC9gCVi4cwW +db47CN8N4wQyMN3KYS8pEkbMkYR2mQHmx9BphwKqsTInxYh7gGDgrdAG9a92ZyJ0 +hud8A74j8EVEmYd5YuNgI/16Ei0Sxd1nsknfHZhycuKb0d/utGKU6rkCYz0fNprT +Ls/Pn0SKS8SgseMErNR0JQwx1NrdI5xpN2nxsKU7nmss/iOYvXzV0OexT50pGbgJ +gvP4AZjL3eWwPvEWldlHg0JyziN/YyvpHkhiUq+4HMdqrcGOR6n7pCfHsPQGJXDQ +4CBSu93UZ6SlJI2obqmOkJ/0YcpXi2sJMmZziQIDAQABAoIBAQCeomOdRCIgetan +tjUIWSKaZwUzQg26acFoUxutADbr3qQgDAop+qRi/IrhzDTEmJcZF/kj6KnFn9v1 +T6IM+ziX6P9Duql9XBkByZ55Un7nMraDWzZ8PG3Ri74Z+xn4BE+CnFIIW0AUjhnr +riOUs9JUavhVXuEp3227lyxyZ69pwwq8edFinrVKIZgABwY+w3uxnzFn7cKebnG5 +Q769Oy7FX827f+7F4RiHjs0J07pSgyzdND47qo2yPdq4DmgSXSHS43e/ZH2Y+25q +yPvqvMqpkVqcJ3MBYLdJDzDk/d965dVyga0HCdRs0NNy6DyDWTLrvcLLETcZRn3+ +38h6miD9AoGBAO66yWU3Fv1W+fM6O2ZLiyKLayZLKQ10+s2XpLw2dl1J/ivCTn9r +p+KPek4VNq4+kI1sXXxp0hwy51zRTjUGocK8ao4IRbIhllCI9ROshPa2Fa4KfOIT +SFfnQdx/upJacZIJb3E4aeQgdXfWrm1LLWZqCeXd85e590KsHZAt6aG7AoGBAOsB +7/POkYfbJlS6JuYWZwXuABtA9+51QANqzdZjjLJ+ZMcAVwL8zGsFPmDlssU49rlC +GYAkU1d49Rw8iF7mn5e243joZer1K7YFNeg91zp4Wp6uJlbNCg8hN7i3shoIimfu +6vF9NLdY25x0qizXu033TTnctLFuMBDE30rdizmLAoGBAJhgYwIWyrbDmGDWj2l4 +2IMhKDBWEwsC2r71hvGXda+P9gsqR/5u0cb7u54xTiijyJJsU7OAu9rB5wlIk7mm +1QM+TmkAALR1WcNn175KBMiQaoAfM5z9n9RzyIcchBK8ZfdHzHkg//3bdf8a6VTb +gkv3bP/qznvO+HL29xu7In/XAoGBAJJrIpVEnmeGotsnIBU63/VR078nO1HWu4tl +f9mTLJYJKcDS9WNnHfWPzs2QT1GRrCbAiCLOfx6AvjZZgJ2gEs7zo8YxBU7ecd12 +YZ/Q58gGNG+pEToDhcDncVAlI1IVACbBNKBA4hdZxXo1NdG6l3h8HCFw4SOrA0dv +Ya/DWHsBAoGAAqv0H0chJbe17C26w9j/vTg9s/G6cQ27Fr29x93Fp5ZkA9ks8Dq/ +kGVpxbokRpcjAxce3DHMHUrWA2fjkqeB/GVw8WJS0hlgIV/b3jLOhtDq1XYkIGVE +i8gQjdJvHiMolE+lZIgtcFV+5eHlP/OJwnGTQOkG+P2fx6YrJGBuI/c= +-----END RSA PRIVATE KEY----- diff --git a/test/config/certs/rsa.dev.pem b/test/config/certs/rsa.dev.pem new file mode 100644 index 0000000..4e3e485 --- /dev/null +++ b/test/config/certs/rsa.dev.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDZjCCAk4CCQDYb2lyTxN3mDANBgkqhkiG9w0BAQsFADB2MQswCQYDVQQGEwJD +TjERMA8GA1UECAwIWmhlamlhbmcxETAPBgNVBAcMCEhhbmd6aG91MRAwDgYDVQQK +DAdTdW55YXJkMQ8wDQYDVQQLDAZEZXZpY2UxHjAcBgNVBAMMFVN1bnlhcmQgUlNB +IFJvb3QgQ2VydDAeFw0yMzA0MDMwNjU3MjVaFw0zMzAzMzEwNjU3MjVaMHQxCzAJ +BgNVBAYTAkNOMREwDwYDVQQIDAhaaGVqaWFuZzERMA8GA1UEBwwISGFuZ3pob3Ux +EDAOBgNVBAoMB1N1bnlhcmQxDzANBgNVBAsMBkRldmljZTEcMBoGA1UEAwwTU3Vu +eWFyZCBEZXZpY2UgQ2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANsnRV5w6/+z+IYHnOoK/gGYZc9f1w36syOzMslAvYAlYuHMFnW+OwjfDeMEMjDd +ymEvKRJGzJGEdpkB5sfQaYcCqrEyJ8WIe4Bg4K3QBvWvdmcidIbnfAO+I/BFRJmH +eWLjYCP9ehItEsXdZ7JJ3x2YcnLim9Hf7rRilOq5AmM9Hzaa0y7Pz59EikvEoLHj +BKzUdCUMMdTa3SOcaTdp8bClO55rLP4jmL181dDnsU+dKRm4CYLz+AGYy93lsD7x +FpXZR4NCcs4jf2Mr6R5IYlKvuBzHaq3Bjkep+6Qnx7D0BiVw0OAgUrvd1GekpSSN +qG6pjpCf9GHKV4trCTJmc4kCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAkjKHyPk3 +0dkgOYuBnW4KHyBigZNgFvHRXPXAuXlGJx0RH8PmJdcxTvmS4cEzMngThz/8tmWf +PP+E4cJIyQyr0fJSnIaxfrSGIMowU+GYE8K3iVeS6nQN9+vtEMUOKmprtzeRH6eI +XN7F1x8KZHJoDMhmr9ELxs73fUS/aRvglyK7xgS4VBO40Jwyuj2b9jLK7toDMfcM +0DArxiuo/u3P1K8rN5sxLeb6dra8aBAl8dr9884VVbDfRX+y0RB/YaaSjkwlYDRV +FNS8pwLO+7T//HkwmxF8PqpXkrUuqLZOuLLabF6OSCr9GMtksAV8Sz2xU6YZQz4S +LKJyxxzv/hUWvA== +-----END CERTIFICATE----- diff --git a/test/config/certs/sm2.enc.key b/test/config/certs/sm2.enc.key new file mode 100644 index 0000000..a31e6b1 --- /dev/null +++ b/test/config/certs/sm2.enc.key @@ -0,0 +1,8 @@ +-----BEGIN EC PARAMETERS----- +BggqgRzPVQGCLQ== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEID7x9VjRErDY+pqa3s0UBGURgSKyi6Un3imc5FG3cttOoAoGCCqBHM9V +AYItoUQDQgAEd0GwW7VzultdonIHPKjFu6+Itrl8VSK5hcJ8ws6DSUXXSCbppoWy +P9mFOpc9mWOAwkS+CByYFE/CAL/b966NBA== +-----END EC PRIVATE KEY----- diff --git a/test/config/certs/sm2.enc.pem b/test/config/certs/sm2.enc.pem new file mode 100644 index 0000000..08658b8 --- /dev/null +++ b/test/config/certs/sm2.enc.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIIB/zCCAaWgAwIBAgIJAL5tPQX+HyrdMAoGCCqBHM9VAYN1MHYxCzAJBgNVBAYT +AkNOMREwDwYDVQQIDAhaaGVqaWFuZzERMA8GA1UEBwwISGFuZ3pob3UxEDAOBgNV +BAoMB1N1bnlhcmQxDzANBgNVBAsMBkRldmljZTEeMBwGA1UEAwwVU3VueWFyZCBT +TTIgUm9vdCBDZXJ0MB4XDTIzMDQwNDA3MjI1MVoXDTMzMDQwMTA3MjI1MVoweDEL +MAkGA1UEBhMCQ04xETAPBgNVBAgMCFpoZWppYW5nMREwDwYDVQQHDAhIYW5nemhv +dTEQMA4GA1UECgwHU3VueWFyZDEPMA0GA1UECwwGRGV2aWNlMSAwHgYDVQQDDBdT +dW55YXJkIERldmljZSBFbmMgQ2VydDBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IA +BHdBsFu1c7pbXaJyBzyoxbuviLa5fFUiuYXCfMLOg0lF10gm6aaFsj/ZhTqXPZlj +gMJEvggcmBRPwgC/2/eujQSjGjAYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgM4MAoG +CCqBHM9VAYN1A0gAMEUCIGegR6g/BCjcnEkFdY6nbKJvaoGTHGZpfvU8NJZDVc35 +AiEAmb9Lla0l0GimoImTXtq9ry2WkgQ+q0X/BZYsfNyHZ28= +-----END CERTIFICATE----- diff --git a/test/config/certs/sm2.sig.key b/test/config/certs/sm2.sig.key new file mode 100644 index 0000000..d93fc76 --- /dev/null +++ b/test/config/certs/sm2.sig.key @@ -0,0 +1,8 @@ +-----BEGIN EC PARAMETERS----- +BggqgRzPVQGCLQ== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEICW1mzkAgayW4sTBsJeU/yePU3WUxyosD1y94lfmficzoAoGCCqBHM9V +AYItoUQDQgAEmFy2tYzB8lOUW/YJiYR6csYc1UsCzRE4LrLRCacrBw4LzJkmjJcJ +i1yBxWlXWTXJpY8s8nrpUsngc/ohXBRk+Q== +-----END EC PRIVATE KEY----- diff --git a/test/config/certs/sm2.sig.pem b/test/config/certs/sm2.sig.pem new file mode 100644 index 0000000..edaf2bc --- /dev/null +++ b/test/config/certs/sm2.sig.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIIB/jCCAaSgAwIBAgIJAL5tPQX+HyrcMAoGCCqBHM9VAYN1MHYxCzAJBgNVBAYT +AkNOMREwDwYDVQQIDAhaaGVqaWFuZzERMA8GA1UEBwwISGFuZ3pob3UxEDAOBgNV +BAoMB1N1bnlhcmQxDzANBgNVBAsMBkRldmljZTEeMBwGA1UEAwwVU3VueWFyZCBT +TTIgUm9vdCBDZXJ0MB4XDTIzMDQwNDA3MjIzMloXDTMzMDQwMTA3MjIzMlowdzEL +MAkGA1UEBhMCQ04xETAPBgNVBAgMCFpoZWppYW5nMREwDwYDVQQHDAhIYW5nemhv +dTEQMA4GA1UECgwHU3VueWFyZDEPMA0GA1UECwwGRGV2aWNlMR8wHQYDVQQDDBZT +dW55YXIgRGV2aWNlIFNpZyBDZXJ0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE +mFy2tYzB8lOUW/YJiYR6csYc1UsCzRE4LrLRCacrBw4LzJkmjJcJi1yBxWlXWTXJ +pY8s8nrpUsngc/ohXBRk+aMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBsAwCgYI +KoEcz1UBg3UDSAAwRQIgYdslbhD8LBIvTpl9wemPLdLN1tsgyq5WGYSlKMtHtPsC +IQDc7xD3MVo3lVgBRcjJ2Pl/ZZvYpVObldqIE8VzdLErbA== +-----END CERTIFICATE----- diff --git a/test/config/http/hsm.conf b/test/config/http/hsm.conf new file mode 100644 index 0000000..84cc242 --- /dev/null +++ b/test/config/http/hsm.conf @@ -0,0 +1,111 @@ +server { +listen 80; + server_name 0.0.0.0; + + + location / { + root /app/dist; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + location ^~ /api/v1/ { + proxy_pass http://127.0.0.1:1023/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + client_max_body_size 900M; + client_body_buffer_size 900M; + + proxy_connect_timeout 720; + proxy_read_timeout 720; + proxy_send_timeout 720; + } + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} + + +server { + listen 443 ssl default_server; + server_name 0.0.0.0; + + ssl_protocols TLSv1.3; + ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA:AES256-SHA; + ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256; + ssl_verify_client off; + ssl_prefer_server_ciphers on; + + ssl_certificate /usr/local/nginx/conf/man/certs/rsa.dev.pem; + ssl_certificate_key /usr/local/nginx/conf/man/certs/rsa.dev.key; + + location / { + root /app/dist; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + location ^~ /api/v1/ { + proxy_pass http://127.0.0.1:1023/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + client_max_body_size 900M; + client_body_buffer_size 900M; + + proxy_connect_timeout 720; + proxy_read_timeout 720; + proxy_send_timeout 720; + } + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} + + + +server { + listen 8443 ssl default_server; + server_name 0.0.0.0; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:ECC-SM2-SM4-GCM-SM3:ECC-SM2-SM4-CBC-SM3; + ssl_conf_command Ciphersuites TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3; + ssl_verify_client off; + ssl_prefer_server_ciphers on; + + ssl_certificate /usr/local/nginx/conf/man/certs/sm2.sig.pem; + ssl_certificate_key /usr/local/nginx/conf/man/certs/sm2.sig.key; + + location / { + root /app/dist; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + location ^~ /api/v1/ { + proxy_pass http://127.0.0.1:1023/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + client_max_body_size 900M; + client_body_buffer_size 900M; + + proxy_connect_timeout 720; + proxy_read_timeout 720; + proxy_send_timeout 720; + } + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} \ No newline at end of file diff --git a/test/logs/access.log b/test/logs/access.log new file mode 100644 index 0000000..e8fe90f --- /dev/null +++ b/test/logs/access.log @@ -0,0 +1,9 @@ +127.0.0.1 - - [14/Aug/2026:02:59:33 +0000] "GET / HTTP/1.1" 200 47 "-" "curl/8.5.0" +127.0.0.1 - - [14/Aug/2026:02:59:33 +0000] "GET / HTTP/1.1" 200 47 "-" "curl/8.5.0" +127.0.0.1 - - [14/Aug/2026:03:00:32 +0000] "GET / HTTP/1.0" 200 47 "-" "-" +127.0.0.1 - - [14/Aug/2026:03:01:01 +0000] "GET / HTTP/1.0" 200 47 "-" "-" +127.0.0.1 - - [14/Aug/2026:03:01:31 +0000] "GET / HTTP/1.0" 200 47 "-" "-" +127.0.0.1 - - [14/Aug/2026:03:01:57 +0000] "GET / HTTP/1.0" 200 47 "-" "-" +5.61.209.44 - - [14/Aug/2026:03:02:00 +0000] "GET /SDK/webLanguage HTTP/1.1" 200 47 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.46" +127.0.0.1 - - [14/Aug/2026:03:26:59 +0000] "GET / HTTP/1.0" 200 47 "-" "-" +127.0.0.1 - - [14/Aug/2026:03:27:01 +0000] "GET / HTTP/1.0" 200 47 "-" "-" diff --git a/test/logs/error.log b/test/logs/error.log new file mode 100644 index 0000000..4db90e9 --- /dev/null +++ b/test/logs/error.log @@ -0,0 +1,24 @@ +2026/08/14 02:44:27 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:44:27 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:44:28 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:44:29 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:44:30 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:44:32 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:44:35 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:44:42 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:44:55 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:45:21 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:46:13 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:47:13 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:48:13 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:49:13 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:50:14 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:51:14 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:52:15 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:53:15 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:TLS_SM4_GCM_SM3:TLS_SM4_CCM_SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:54:15 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:ECC-SM2-SM4-GCM-SM3:ECC-SM2-SM4-CBC-SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:55:16 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:ECC-SM2-SM4-GCM-SM3:ECC-SM2-SM4-CBC-SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:56:16 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:ECC-SM2-SM4-GCM-SM3:ECC-SM2-SM4-CBC-SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:57:16 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:ECC-SM2-SM4-GCM-SM3:ECC-SM2-SM4-CBC-SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 02:58:17 [emerg] 1#0: SSL_CTX_set_cipher_list("ECDHE-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-CBC-SM3:ECC-SM2-SM4-GCM-SM3:ECC-SM2-SM4-CBC-SM3") failed (SSL: error:0A0000B9:SSL routines::no cipher match) +2026/08/14 03:26:36 [notice] 24#0: signal process started diff --git a/test/logs/nginx.pid b/test/logs/nginx.pid new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/test/logs/nginx.pid @@ -0,0 +1 @@ +1 diff --git a/test/logs/stream-access.log b/test/logs/stream-access.log new file mode 100644 index 0000000..e69de29 diff --git a/test/logs/stream-error.log b/test/logs/stream-error.log new file mode 100644 index 0000000..e69de29 diff --git a/test/start.sh b/test/start.sh new file mode 100644 index 0000000..e6bd841 --- /dev/null +++ b/test/start.sh @@ -0,0 +1,10 @@ +name=gateway.lib +img=gateway:v2 +docker rm -vf $name +docker run -d --name $name \ + --net host \ + --restart=always \ + -v `pwd`/config:/usr/local/nginx/conf/man \ + -v `pwd`/logs:/usr/local/nginx/logs \ + -v /app/hsm/vue:/app \ + $img