使用mmw使用瓜瓜的mtls服务

请按以下步骤获取证书📝:

  1. 前往 https://mmw.ggemo.com/visit/index.html
  2. 联系瓜瓜 要一个token
  3. 输入token, 和自己随便输六位数字密码(比如 114514), 点击生成证书
  4. 浏览器会自动下载一个.p12格式的文件

安装证书

macos

  1. 直接打开.p12文件, 默认是用钥匙串访问应用打开的
  2. 输入获取证书时输入的六位数字密码, 验证系统的指纹/密码等
  3. 在钥匙串访问 → 系统 → 证书中, 找到Client-2025-02-31-11-22-33类似的证书, 双击打开
  4. 在信任中, 将安全套接字层(SSL)设为始终信任
  5. 钥匙串访问 → 系统 → 证书中, 将证书前面的小箭头展开, 能看到一个Imported Private Key, 双击打开, 在访问控制中 添加你常用的浏览器(否则 每次用到证书访问链接的时候 都要输入系统密码)

android

  1. 打开.p12文件, 选择使用凭证安装应用打开
  2. 输入获取证书时输入的六位数字密码, 验证系统的指纹/密码等
  3. 选择作为VPN和应用用户证书
  4. 为证书命名环节请随意

windows

双击打开下载的证书, 选择当前用户(默认), 然后下一步下一步 输入获取证书时输入的六位数字密码 下一步下一步下一步

ipad

如果是非safari浏览器下载的证书, 需要先把证书在文件管理中从浏览器的文件夹 移动到下载中, 然后点击证书

下载证书后 浏览器弹框 点击确定, 然后去设置, 左边最上面应该有一个已下载描述文件, 如果没有的话 去通用 → VPN与设备管理. 点击已下载的描述文件中的一条 → 输入ipad的密码 → 输入获取证书时输入的六位数字密码

扩展: 自动选取证书

只按上面安装证书的话, 每次访问都要点一下选择证书, 按下面操作可以让chrome自动选用证书(需要更改ISSUER CN字段)

windows (powershell管理员模式)

1
2
3
4
5
6
7
8
9
10
$regPath = "HKLM:\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls"
if (-not (Test-Path $regPath)) {
New-Item -Path $regPath -Force
}

$certConfig = '{"pattern":"https://[*.]qrii.top:58888","filter":{"ISSUER":{"CN":"QriSelf"}}}'
New-ItemProperty -Path $regPath -Name "1" -Value $certConfig -PropertyType String -Force

$certConfig1 = '{"pattern":"https://[*.]mastersword.top:58888","filter":{"ISSUER":{"CN":"QriSelf"}}}'
New-ItemProperty -Path $regPath -Name "2" -Value $certConfig1 -PropertyType String -Force

windows (reg文件)

新建一个xxx.reg文件, 编辑copy进去下面的文本, 保存之后 双击打开 进行注册表注册

1
2
3
4
5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls]
"1"="{\"pattern\":\"https://[*.]qrii.top:58888\",\"filter\":{\"ISSUER\":{\"CN\":\"QriSelf\"}}}"
"2"="{\"pattern\":\"https://[*.]mastersword.top:58888\",\"filter\":{\"ISSUER\":{\"CN\":\"QriSelf\"}}}"

macos

1
2
3
4
defaults write com.google.Chrome AutoSelectCertificateForUrls -array

defaults write com.google.Chrome AutoSelectCertificateForUrls -array-add -string '{"pattern":"https://[*.]qrii.top:58888","filter":{"ISSUER":{"CN":"CuCA"}}}'
defaults write com.google.Chrome AutoSelectCertificateForUrls -array-add -string '{"pattern":"https://[*.]mastersword.top:58888","filter":{"ISSUER":{"CN":"CuCA"}}}'

🛡️安全性声明🛡️

生成证书的项目开源在https://github.com/mmmaru/mmw

私钥纯在本地浏览器运算, 没有经过网络传输: 访客端网页在前端生成RSA私钥和csr后, 仅将csr传给后端, 后端用对应ca的私钥进行签名, 返回签名后的crt, 前端将crt和私钥打包成p12进行下载

安装这个p12仅安装客户端认证证书, 不涉及信任CA. 就算真的成为用户的网络中间人 也无法解密用户的https