mirror of
https://gitee.com/mirrors/AllinSSL.git
synced 2026-03-08 07:41:10 +08:00
【调整】插件支持动态参数和参数类型
【调整】获取证书列表支持状态过滤 【新增】dns提供商腾讯云eo
This commit is contained in:
@@ -7,11 +7,14 @@ import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"github.com/gin-contrib/gzip"
|
||||
"github.com/gin-contrib/sessions"
|
||||
"github.com/gin-contrib/sessions/memstore"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/tjfoc/gmsm/gmtls"
|
||||
"net/http"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -54,7 +57,45 @@ func RunServer(ctx context.Context, r *gin.Engine) error {
|
||||
defer close(errchan)
|
||||
err := srv.ListenAndServeTLS("data/https/cert.pem", "data/https/key.pem")
|
||||
if err != nil {
|
||||
errchan <- err
|
||||
// 读取 SM2 证书和密钥(PEM 格式)
|
||||
certPem, err := os.ReadFile("data/https/cert.pem")
|
||||
midCertPem, err := os.ReadFile("data/https/mid_cert.pem")
|
||||
|
||||
keyPem, err := os.ReadFile("data/https/key.pem")
|
||||
midKeyPem, err := os.ReadFile("data/https/mid_key.pem")
|
||||
|
||||
tlsCert, err := gmtls.X509KeyPair(certPem, keyPem)
|
||||
midcert, err := gmtls.X509KeyPair(midCertPem, midKeyPem)
|
||||
if err != nil {
|
||||
errchan <- fmt.Errorf("无法加载国密证书和私钥: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
tlsConfig := &gmtls.Config{
|
||||
Certificates: []gmtls.Certificate{tlsCert, midcert}, // 使用国密证书和加密证书
|
||||
MinVersion: gmtls.VersionGMSSL,
|
||||
MaxVersion: gmtls.VersionGMSSL,
|
||||
GMSupport: &gmtls.GMSupport{
|
||||
WorkMode: gmtls.ModeGMSSLOnly,
|
||||
}, // 启用 GM/T 0024 协议
|
||||
CipherSuites: []uint16{
|
||||
gmtls.GMTLS_SM2_WITH_SM4_SM3, // 明确指定国密套件
|
||||
},
|
||||
GetConfigForClient: func(chi *gmtls.ClientHelloInfo) (*gmtls.Config, error) {
|
||||
fmt.Printf("客户端 Hello 协议版本: %x, 支持 cipher suites: %+v\n", chi.SupportedVersions, chi.CipherSuites)
|
||||
return nil, nil
|
||||
},
|
||||
}
|
||||
//srv.TLSConfig = tlsConfig
|
||||
ln, err := gmtls.Listen("tcp", ":"+public.Port, tlsConfig)
|
||||
if err != nil {
|
||||
errchan <- fmt.Errorf("无法启动国密 HTTPS 服务器: %v", err)
|
||||
return
|
||||
}
|
||||
err = http.Serve(ln, r)
|
||||
if err != nil {
|
||||
errchan <- err
|
||||
}
|
||||
}
|
||||
}()
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user