Add demo mTLS client certificates and key

Included at the repository owner's request for demonstration and
integration testing only. Revocable on the robot side; not for
production use.
This commit is contained in:
2026-10-29 20:50:21 +08:00
parent 5e2017de69
commit 9b30ce4480
7 changed files with 208 additions and 5 deletions
+21
View File
@@ -0,0 +1,21 @@
# 演示用客户端证书
本目录包含连接山猫 S10 所需的 mTLS 客户端材料,**按仓库所有者要求随代码提交,
仅用于演示与联调**。这些文件不是生产凭据,仓库所有者可在端侧吊销/更换。
| 文件 | 说明 |
|---|---|
| `client.key` | 客户端私钥,RSA 2048 / PKCS#8 / PEM,无口令保护 |
| `client_chain.crt` | 客户端证书链(client.local ← TLS CA ← Project CA ← Root CA) |
| `root_ca.crt` | 根 CA 证书 |
| `client_tls.conf` | App 内的原始 TLS 配置模板 |
客户端证书有效期至 **2027-04-03**,根 CA 有效期至 2036-03-31。
持有这套材料即可与机器人建立 mTLS 连接并下发控制指令,因此:
- 不要把这些文件用于生产环境;
- 不要放到公开仓库或分发给无关人员;
- 如仓库权限扩大或材料外泄,请在机器人端吊销/更换客户端证书。
用法见上级目录 `README.md`,默认会优先查找本目录下的证书。
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCWMPaz89s03Ry9
reK2kuTbq8DswFxl5OkuDKPZm4Bn62HxmD6AuQO8FeIOMW3mtlw7PZwLoPXihzrn
A58HzvZ8TCCdEzxkbzz4I3MQekmRgIHkSdO5Mb2bT7BCYkqXOWOz0nWC6auUgqUe
qyRTA29yT2ElOJKWdUL4jmtuyNhbnxBhCLU8oER3vybZ4EDmKBT1pY4i9CYH3VU7
RIYuwh1qQ0/6Xd2VC2sPs9tROHvg2T5pMhwwRLhXumbcHutuTUu1vzQrSoQ3/ZGq
bUtQJBLiwzUdSvL6Awb3Z42kRL+rwTbVm/KekZUHw7V+x1ZyliOWU6nRyz8/ZizA
HSmExW27AgMBAAECggEAECXQiHV/S8uQHlahNEb5Lc26uYRPCtzV3eUZrWOaJnzO
CYHNtTJEfrGNneqzlGVmki9Ouois7Go6ANdzVDgXaTLCzjs2DYhQ3PmWvUlLOpu/
RhJSngEv5RBoH3hePlcQa1Iv3zTiBTQXWQOb2ARbtEW+Pe27WPY04/C6spe2fKx5
sJxS3U1T6CRldQn4F1sebocNM1O/Cxo5NOBtEzsm+dTFYSBr2sFGtKehY1+cs+kU
xDioMfubtXE+G24YtedTiCyIvuU5CVyCoUmUGdqEXuXaRmrpM9EjCmWRtBr6jSS0
brQteu89oH5oQxtbOIuUDCMH9eHzowuqKXHJNswcSQKBgQDPHJ0Ce7MkSws64XQL
Bjlh/Ifhho6ep5OXiEX2xZY6EvL6DrFfTr7FWB7MBgj7Lguf/fnU+Watl7KPPz0B
AKyDmGMat8uyCA4nahtc3EIATpOW7PWsgIN3RyIDJHQk1Ww5Vl5FsTesKAYzSvSc
mdgfWmPir0HKYSAsv/StUVKiOQKBgQC5pL95aVE2VQIMudNesZ6xK1t8C7aQyRbu
jkhF7I0WF1YtahLHtPeoEzw2/G4nd3mjMQf6YriPC2WNYv+eMSV3wsUhrUOdYcff
zdrrJiD0bTGgyGMYXgf+Dq0FwTGCGM3I4TlMAH1zucQnce8jPJhti9JF3QgEhjsC
FfJvkph/kwKBgBSEJRmF320M8gPXKYOeDjkipuM0TRRyTTCJk0SqtgLytZcHtZJX
XpZ18DcNsf4PxZ8HraPnQMCZclq2TPi4dF5kzgxrgIYWPjCxVhyQxQj6v6wHtR5t
bJh4N2pQRiEP8zSK1bPZpkYrgNG77xdENiCE97gQ3FeL34APU9GHaMQhAoGAbSRg
tf6nEmxT8itmC2wdwkedV4aDZQf0hXf9Ia77G5vIvJZ6SBMq7xOv+RvbnzRsvPbc
m+ZiXybyI3eqlNSMFKbbwvrcn7CXFAsww8L86PcxkDd/mxndVQ5HxvRYKQZwJcPU
Lcyz9M+odRBU6cB8VRs5Gn3ictZ/5rAEgngLVCUCgYEAt+55lje/Lix9NnJXaDH8
sL0Rcmndd0GaC3HcYqW1P08/Vyx5kd18uoIqKXBurVF0Yxnk1o5RecbTfmsdl5pB
ngc4h7s9OcAJ7qavBpeR5mQ+q/KMXkZ+PI/tS+YeegEQupU2Frew5FQPvjxLTUZf
nPv8/LdXnjVuU73Tmm/fZHg=
-----END PRIVATE KEY-----
+95
View File
@@ -0,0 +1,95 @@
-----BEGIN CERTIFICATE-----
MIIExDCCAqygAwIBAgIUVbCenZ3mDwTTEUQNrGttj7OzmG8wDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0Jl
aWppbmcxFDASBgNVBAoMC1JvYm90U2VydmVyMQ8wDQYDVQQLDAZUTFMgQ0ExDzAN
BgNVBAMMBlRMUyBDQTAeFw0yNjA0MDMwNjUxMjBaFw0yNzA0MDMwNjUxMjBaMG8x
CzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdCZWlqaW5n
MRQwEgYDVQQKDAtSb2JvdFNlcnZlcjEPMA0GA1UECwwGQ2xpZW50MRUwEwYDVQQD
DAxjbGllbnQubG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCW
MPaz89s03Ry9reK2kuTbq8DswFxl5OkuDKPZm4Bn62HxmD6AuQO8FeIOMW3mtlw7
PZwLoPXihzrnA58HzvZ8TCCdEzxkbzz4I3MQekmRgIHkSdO5Mb2bT7BCYkqXOWOz
0nWC6auUgqUeqyRTA29yT2ElOJKWdUL4jmtuyNhbnxBhCLU8oER3vybZ4EDmKBT1
pY4i9CYH3VU7RIYuwh1qQ0/6Xd2VC2sPs9tROHvg2T5pMhwwRLhXumbcHutuTUu1
vzQrSoQ3/ZGqbUtQJBLiwzUdSvL6Awb3Z42kRL+rwTbVm/KekZUHw7V+x1ZyliOW
U6nRyz8/ZizAHSmExW27AgMBAAGjXjBcMBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcE
fwAAATAdBgNVHQ4EFgQUGZGz2zeGnvOnK6kmc4M/i77JetIwHwYDVR0jBBgwFoAU
GPrdnLKFtoTb4HzB5EY2eITAAN8wDQYJKoZIhvcNAQELBQADggIBAE442wuNBIhV
dAEkTICgV0Nbugp+4+fV9Mmy5F0UFCb3VoUJ4CKJoFORHMCHQCRtyUPGTBJvuqr3
RyKkAQc7T9gBvo34CTs7fkBG/sja2tlbAq9AjgzUUwHErKH5djNKqLfzUg9MjcF0
XH/pW/MrhJSMsZbDjk+Y4URffpujxSIz/IiKjJ790Kcapyr3GbJr813XzPSB01EI
yvL/GZBCY28svVtocyBubRyUsDkNdcg+X489JJLyITonMQ3APXIEQh5o6/YaSuPT
9l3GrFeDMZE70Ex1g/RF45cIw89HzunTcpW6on2Qsp7uC5oKah+j5Ah7mCFgnUny
NuZ53MyOV+h+FVxt1zykAO/VOPZg+x6N5/jK3TDkAqLr//JJcRh6NBkW8m72AfGR
O0xTSKLZIHbg+CFvoAoQ5sRewyRWzLLT1fvqt8mIPyLCOufZlwjatKlCTY0uV1y+
pKgtFGedrc1cS9zuF6K9CtsYhSIuCN2KB1lKdj7EvkGOsVMopGtF+XT6A9Q697kp
8E/67eH6pLIuu/4HK11e54V6ALXr02bG23u/096oVL/EoaCyjKIhP9J7WlD1C4ev
T2odKhTogoZsg0CASLc8xoA99qHzlatkv/UV4lFDbqcgrVGiQDHZNquJOuz4CTRb
HgrD09DfktcTS8EhtgX1S/4sGMKVsITM
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
dw==
-----END CERTIFICATE-----
+26
View File
@@ -0,0 +1,26 @@
# Android 客户端 TLS/DTLS 加密通信配置文件
[global]
role = "client"
verify_peer = true
security_level = 1
hw_accel = false
secure_memory = false
[certificates]
# 文件身份模式必须显式声明 source="file" + allow_file_identity=true
# Android 默认身份源为 android_keystore,文件私钥模式需强制开启
source = "file"
allow_file_identity = true
# 运行时路径由 App 在代码中动态设置(从 assets 复制到 filesDir/certs/)
cert_file = client_chain.crt
key_file = client.key
ca_file = root_ca.crt
[tcp]
keepalive_interval = 30
nodelay = true
[udp]
mtu = 1500
cookie_verify = true
+33
View File
@@ -0,0 +1,33 @@
-----BEGIN CERTIFICATE-----
MIIFtzCCA5+gAwIBAgIUR+n01aMdSgMRx/foDV8RjXLjhzcwDQYJKoZIhvcNAQEL
BQAwazELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0Jl
aWppbmcxFDASBgNVBAoMC1JvYm90U2VydmVyMRAwDgYDVQQLDAdSb290IENBMRAw
DgYDVQQDDAdSb290IENBMB4XDTI2MDQwMzA2NTExNloXDTM2MDMzMTA2NTExNlow
azELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWpp
bmcxFDASBgNVBAoMC1JvYm90U2VydmVyMRAwDgYDVQQLDAdSb290IENBMRAwDgYD
VQQDDAdSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAub27
kBnuApEZdIdPyQM7jKAKEDserH9gXbHGfhd7x/iRXyJ/OjkV3HFu4ojnXHmon1wc
RnwtRagrrYtgURI3bJcltdrugVmyJsOOonYpt2AFMeAj1B7XK9vAua+qTZAHwJIy
Lj6VvZ4JOfAm/RjTg1kFMTfG9uHij7Sefq7h67xYwricmJCsEoHW7rMDWJmwNx8z
p44I07Wd5jg4utzWp+tfsWv7x+lrLIT9ZVR3NN5TzbBiSqfbBjW45BpcuNKb9f5t
+MmSru4axP7mn0mGQJTnP1+osvbj19L5eQcStea0JJXzzzUyNQ7u3wiwk1iz3COT
YZy/lIF4Afia6WnB5u9OUfQ53hriurCh2mTQ19UXrBJPN6VagaI8SDdi885MFMBO
3qAjYvZ4xB6rI+f3OfTbUgf3AZi6TlSvpbHgK+rvz02aBSdhcxqMRDHwKX4F0q6l
3PVEqkQVg734a0bq3e/YTgTEdiB/ymnEIQ2zmEgelVZQaECrWbbIb/ap70218mih
QqZnECca/zx6HPQjBflnX3XTVbw7XPQ0A7mmltwlDL5x9A8sL2UwuLbeOSiVWeGi
86KwsFh8sq6XHyPrIjj75LCA8ZrblaW2bKAScksnsxITw9xvsimcURx36Fk81Zye
oAOdvKW8rSBP3P22TGgBCle8A2bxsofbDnsY8oMCAwEAAaNTMFEwHQYDVR0OBBYE
FPa8QPuXwyZTz9BTu6cdzGLsiGeXMB8GA1UdIwQYMBaAFPa8QPuXwyZTz9BTu6cd
zGLsiGeXMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBADG4jH4X
Uugkvn8oyjPcweyvLKyUl5jQA5zPzJxRhfL8dWj659JklQNhRY4/cvvJgMt+//kp
eAXQfuEwATgDBBuWZgJFBee/FQhV02Wahl/RZHrISkJAdR9W9RQsmdI7wDhkOzRk
R+74lPfBzlpd5J5rx605PYSbC7V+6TKpbUP+g8mNyxGPRhTCK7C2UU5301+0wyuK
aXrUP0QLaQz7psOogVnFeG1xoimq5u3PwadPIcD0adSriKwrtbxtmneFddnaLTxz
RhGhc3229eCViog7ZcMQVT4+hloD2jKyczVsnkFjEFHR+uuqUgm25xxupyJkgvzJ
3JarglY77lyB5iWJQ7VZCbxAzk9cFT066RXKmMvXbiVuJeceoJJ8F1Hjsag7Ren+
pNgq4KYi7dYGzbZp8F5denSZKsZoKKAKLgUnF4i4WdXBdV1pzz0TM3QCo/8yNI2q
yx5v4B5DkgQA5kAY4brXfewFD1pmZiNgY+6GUNCcR+IWZ5iB9u1c/fQRnuXQR6BL
6fPFYEeyN+8yuzilNe7kf+sRXZYT9jKWvrZ10YZPwKXtdifyNprNd4AuvJsg/4xU
7Tq94LCvvCIa9VGe3A/oo48W9p4eRZAPT/bhFh8uvcoxb4IVGwfPTC9BY+dHRZ1E
zIBD7mhyDDN+jd9SnLlKf4chOsr+GZveVwvp
-----END CERTIFICATE-----