TSG-7583: 自签发证书用于TSG各组件间加密通信
This commit is contained in:
59
README.md
59
README.md
@@ -1 +1,58 @@
|
|||||||
签发证书用于各组件间加密通信
|
# 自签发证书用于TSG各组件间加密通信
|
||||||
|
|
||||||
|
**注意**
|
||||||
|
|
||||||
|
* 证书有效 20 年
|
||||||
|
* 为了前向保密使用椭圆曲线prime256v1,而未使用RSA
|
||||||
|
|
||||||
|
**证书信息**
|
||||||
|
|
||||||
|
```
|
||||||
|
Certificate:
|
||||||
|
Data:
|
||||||
|
Version: 3 (0x2)
|
||||||
|
Serial Number: 15951331750435990784 (0xdd5e83b69725ad00)
|
||||||
|
Signature Algorithm: ecdsa-with-SHA256
|
||||||
|
Issuer: C=US, ST=California, L=San Francisco, O=Gdnt-cloud, CN=*.gdnt-cloud.com
|
||||||
|
Validity
|
||||||
|
Not Before: Aug 31 05:59:42 2021 GMT
|
||||||
|
Not After : Aug 29 05:59:42 2031 GMT
|
||||||
|
Subject: C=US, ST=California, L=San Francisco, O=Gdnt-cloud, CN=*.gdnt-cloud.com
|
||||||
|
Subject Public Key Info:
|
||||||
|
Public Key Algorithm: id-ecPublicKey
|
||||||
|
Public-Key: (256 bit)
|
||||||
|
pub:
|
||||||
|
04:49:70:50:9d:7b:57:ad:f3:61:99:8d:99:ab:ec:
|
||||||
|
cf:27:b3:1e:dd:42:48:b7:48:9e:af:11:f5:71:ad:
|
||||||
|
13:ba:01:a0:24:81:ee:9e:ab:59:a0:d0:cc:98:44:
|
||||||
|
27:36:8f:c4:3e:5b:87:e8:cb:6b:65:57:0c:b0:44:
|
||||||
|
90:a2:2a:7b:f3
|
||||||
|
ASN1 OID: prime256v1
|
||||||
|
NIST CURVE: P-256
|
||||||
|
X509v3 extensions:
|
||||||
|
X509v3 Basic Constraints:
|
||||||
|
CA:FALSE
|
||||||
|
X509v3 Subject Alternative Name:
|
||||||
|
DNS:*.gdnt-cloud.com, DNS:gdnt-cloud.com
|
||||||
|
Signature Algorithm: ecdsa-with-SHA256
|
||||||
|
30:45:02:20:18:b9:48:84:e3:34:6e:cf:ff:9a:95:b3:a1:32:
|
||||||
|
27:61:3d:eb:4d:8a:88:d5:12:d4:46:d8:dc:22:77:df:3d:18:
|
||||||
|
02:21:00:c9:24:3e:30:eb:53:11:2c:51:cd:18:24:c6:e4:07:
|
||||||
|
16:4b:72:08:6c:91:5a:6a:ab:90:e1:03:11:2d:63:f9:04
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICBTCCAaugAwIBAgIJAN1eg7aXJa0AMAoGCCqGSM49BAMCMGoxCzAJBgNVBAYT
|
||||||
|
AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2Nv
|
||||||
|
MRMwEQYDVQQKDApHZG50LWNsb3VkMRkwFwYDVQQDDBAqLmdkbnQtY2xvdWQuY29t
|
||||||
|
MB4XDTIxMDgzMTA1NTk0MloXDTMxMDgyOTA1NTk0MlowajELMAkGA1UEBhMCVVMx
|
||||||
|
EzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xEzAR
|
||||||
|
BgNVBAoMCkdkbnQtY2xvdWQxGTAXBgNVBAMMECouZ2RudC1jbG91ZC5jb20wWTAT
|
||||||
|
BgcqhkjOPQIBBggqhkjOPQMBBwNCAARJcFCde1et82GZjZmr7M8nsx7dQki3SJ6v
|
||||||
|
EfVxrRO6AaAkge6eq1mg0MyYRCc2j8Q+W4foy2tlVwywRJCiKnvzozowODAJBgNV
|
||||||
|
HRMEAjAAMCsGA1UdEQQkMCKCECouZ2RudC1jbG91ZC5jb22CDmdkbnQtY2xvdWQu
|
||||||
|
Y29tMAoGCCqGSM49BAMCA0gAMEUCIBi5SITjNG7P/5qVs6EyJ2E9602KiNUS1EbY
|
||||||
|
3CJ33z0YAiEAySQ+MOtTESxRzRgkxuQHFktyCGyRWmqrkOEDES1j+QQ=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
Not Before: Aug 31 05:59:42 2021 GMT
|
||||||
|
Not After : Aug 29 05:59:42 2031 GMT
|
||||||
|
```
|
||||||
|
|||||||
21
conf/wildcard.conf
Normal file
21
conf/wildcard.conf
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
[ req ]
|
||||||
|
default_bits = 2048
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
encrypt_key = no
|
||||||
|
prompt = no
|
||||||
|
req_extensions = req_v3_usr
|
||||||
|
|
||||||
|
[ req_distinguished_name ]
|
||||||
|
countryName = US
|
||||||
|
stateOrProvinceName = California
|
||||||
|
localityName = San Francisco
|
||||||
|
organizationName = Gdnt-cloud
|
||||||
|
commonName = *.__DOMAIN__
|
||||||
|
|
||||||
|
[ req_v3_usr ]
|
||||||
|
basicConstraints = CA:FALSE
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[ alt_names ]
|
||||||
|
DNS.1 = *.__DOMAIN__
|
||||||
|
DNS.2 = __DOMAIN__
|
||||||
13
crt/self-sign.crt
Normal file
13
crt/self-sign.crt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICBTCCAaugAwIBAgIJAN1eg7aXJa0AMAoGCCqGSM49BAMCMGoxCzAJBgNVBAYT
|
||||||
|
AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2Nv
|
||||||
|
MRMwEQYDVQQKDApHZG50LWNsb3VkMRkwFwYDVQQDDBAqLmdkbnQtY2xvdWQuY29t
|
||||||
|
MB4XDTIxMDgzMTA1NTk0MloXDTMxMDgyOTA1NTk0MlowajELMAkGA1UEBhMCVVMx
|
||||||
|
EzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xEzAR
|
||||||
|
BgNVBAoMCkdkbnQtY2xvdWQxGTAXBgNVBAMMECouZ2RudC1jbG91ZC5jb20wWTAT
|
||||||
|
BgcqhkjOPQIBBggqhkjOPQMBBwNCAARJcFCde1et82GZjZmr7M8nsx7dQki3SJ6v
|
||||||
|
EfVxrRO6AaAkge6eq1mg0MyYRCc2j8Q+W4foy2tlVwywRJCiKnvzozowODAJBgNV
|
||||||
|
HRMEAjAAMCsGA1UdEQQkMCKCECouZ2RudC1jbG91ZC5jb22CDmdkbnQtY2xvdWQu
|
||||||
|
Y29tMAoGCCqGSM49BAMCA0gAMEUCIBi5SITjNG7P/5qVs6EyJ2E9602KiNUS1EbY
|
||||||
|
3CJ33z0YAiEAySQ+MOtTESxRzRgkxuQHFktyCGyRWmqrkOEDES1j+QQ=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
8
key/self-sign.key
Normal file
8
key/self-sign.key
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN EC PARAMETERS-----
|
||||||
|
BggqhkjOPQMBBw==
|
||||||
|
-----END EC PARAMETERS-----
|
||||||
|
-----BEGIN EC PRIVATE KEY-----
|
||||||
|
MHcCAQEEIC6qFeIiJvkGqYIxpfl14NZ8bOu6Fk0jfLumg39lTTLMoAoGCCqGSM49
|
||||||
|
AwEHoUQDQgAESXBQnXtXrfNhmY2Zq+zPJ7Me3UJIt0ierxH1ca0TugGgJIHunqtZ
|
||||||
|
oNDMmEQnNo/EPluH6MtrZVcMsESQoip78w==
|
||||||
|
-----END EC PRIVATE KEY-----
|
||||||
7
sign.sh
Normal file
7
sign.sh
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
openssl ecparam -name secp256r1 -genkey -out key/self-sign.key # 使用椭圆曲线生成私钥
|
||||||
|
#./tool gen-key key/self-sign.key gdnt-cloud.com 2048 # 使用 RSA 生成私钥
|
||||||
|
./tool gen-csr csr/self-sign.csr gdnt-cloud.com conf/wildcard.conf key/self-sign.key
|
||||||
|
./tool self-sign crt/self-sign.crt gdnt-cloud.com 3650 sha256 req_v3_usr conf/wildcard.conf csr/self-sign.csr key/self-sign.key
|
||||||
|
./tool chain chain.pem gdnt-cloud.com crt/self-sign.crt
|
||||||
101
tool
Executable file
101
tool
Executable file
@@ -0,0 +1,101 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
COMMAND=$1
|
||||||
|
shift
|
||||||
|
OUT=$1
|
||||||
|
shift
|
||||||
|
DOMAIN=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
mkdir -p $(dirname $OUT)
|
||||||
|
PREGEN_OUT=$(echo "$OUT" | sed "s#/gen/#/pregen/#")
|
||||||
|
if [ -e $PREGEN_OUT ]
|
||||||
|
then
|
||||||
|
cp $PREGEN_OUT $OUT
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$COMMAND" in
|
||||||
|
chain)
|
||||||
|
cat $@ > $OUT
|
||||||
|
;;
|
||||||
|
dhparam)
|
||||||
|
openssl dhparam \
|
||||||
|
-out $OUT \
|
||||||
|
$1
|
||||||
|
;;
|
||||||
|
gen-csr)
|
||||||
|
openssl req -new \
|
||||||
|
-out $OUT \
|
||||||
|
-config <(cat $1 | sed "s/__DOMAIN__/$DOMAIN/g") \
|
||||||
|
-key $2
|
||||||
|
;;
|
||||||
|
gen-csr-no-subject)
|
||||||
|
openssl req -new \
|
||||||
|
-subj / \
|
||||||
|
-out $OUT \
|
||||||
|
-config <(cat $1 | sed "s/__DOMAIN__/$DOMAIN/g") \
|
||||||
|
-key $2
|
||||||
|
;;
|
||||||
|
gen-ca)
|
||||||
|
openssl req -new -x509 -days 7300 \
|
||||||
|
-out $OUT \
|
||||||
|
-config $1 \
|
||||||
|
-key $2
|
||||||
|
;;
|
||||||
|
gen-key)
|
||||||
|
openssl genrsa \
|
||||||
|
-out $OUT \
|
||||||
|
$1
|
||||||
|
;;
|
||||||
|
gen-ecckey)
|
||||||
|
openssl ecparam \
|
||||||
|
-out $OUT \
|
||||||
|
-name $1 \
|
||||||
|
-genkey
|
||||||
|
;;
|
||||||
|
gen-pkcs12-p12)
|
||||||
|
openssl pkcs12 \
|
||||||
|
-out $OUT \
|
||||||
|
-export \
|
||||||
|
-clcerts \
|
||||||
|
-passout "pass:$DOMAIN" \
|
||||||
|
-in $1 \
|
||||||
|
-inkey $2
|
||||||
|
;;
|
||||||
|
pkcs12-convert-p12-pem)
|
||||||
|
openssl pkcs12 \
|
||||||
|
-out $OUT \
|
||||||
|
-clcerts \
|
||||||
|
-passin "pass:$DOMAIN" \
|
||||||
|
-passout "pass:$DOMAIN" \
|
||||||
|
-in $1
|
||||||
|
;;
|
||||||
|
self-sign)
|
||||||
|
openssl x509 -req -CAcreateserial \
|
||||||
|
-out $OUT \
|
||||||
|
-days $1 \
|
||||||
|
-$2 \
|
||||||
|
-extensions $3 \
|
||||||
|
-extfile <(cat $4 | sed "s/__DOMAIN__/$DOMAIN/g") \
|
||||||
|
-in $5 \
|
||||||
|
-signkey $6
|
||||||
|
;;
|
||||||
|
sign)
|
||||||
|
openssl x509 \
|
||||||
|
-req \
|
||||||
|
-CAcreateserial \
|
||||||
|
-days $1 \
|
||||||
|
-$2 \
|
||||||
|
-out $OUT \
|
||||||
|
-extensions $3 \
|
||||||
|
-extfile <(cat $4 | sed "s/__DOMAIN__/$DOMAIN/g") \
|
||||||
|
-in $5 \
|
||||||
|
-CAkey $6 \
|
||||||
|
-CA $7
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown command."
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
Reference in New Issue
Block a user