如果你在通过某frp外网穿透服务使用Stable Diffusion,却发现forksilly无法连接服务,请尝试以下步骤。 安装openssl,并使用cmd进入它的安装目录\bin路径,例如: `C:\OpenSSL-Win64\bin` 1. 生成 CA 私钥 `openssl genrsa -out ca.key 2048` 2. 准备 ca.ext 扩展配置文件 新建ca.ext 文件内容完全如下(包括顶部的 [v3_ca]) ``` [ v3_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:TRUE keyUsage = critical, keyCertSign, cRLSign ``` 3. 用 CA 私钥生成 CSR(证书签名请求) 填入信息时,Common Name 建议填 “My Root CA”。其他信息可以随便或不填 `openssl req -new -key ca.key -out ca.csr` 4. 用自己签署 CSR 生成自签名证书,并加载扩展 使用 openssl x509 命令时,要指定该扩展的 section 名字为 [v3_ca],这样: `openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt -days 3650 -sha256 -extfile ca.ext -extensions v3_ca` 5. 生成服务器私钥(假设你服务器或frp域名是myfrp.com.) `openssl genrsa -out myfrp.com.key 2048` 6. 第二步:生成 CSR(证书签名请求) 注意填写时: Common Name (CN) 一定要填 myfrp.com 其它字段可以随意或空着 `openssl req -new -key myfrp.com.key -out myfrp.com.csr` 7. 创建扩展文件 server.ext 在当前目录下创建一个名为 server.ext 的文件,内容如下: ``` [ v3_req ] basicConstraints = CA:FALSE keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [ alt_names ] DNS.1 = myfrp.com DNS.2 = www.myfrp.com ``` 8. 使用你的 CA 签发服务器证书 `openssl x509 -req -in myfrp.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out myfrp.com.crt -days 825 -sha256 -extfile server.ext -extensions v3_req` 这样就能在 Windows 的命令行中正确运行了。 在 Windows 上查看证书详细信息的命令: `openssl x509 -in myfrp.com.crt -noout -text` # 在安卓手机上导入ca证书: 安卓系统:设置-安全-加密与凭据-安装证书-选择ca.crt ColorOS:设置-密码与安全-系统安全-凭据存储-从存储设备安装证书-ca证书-选择仍然安装,然后选择ca.crt导入,其他文件不用导入。 其他厂商定制系统请自行检索互联网 安装后,证书会出现在信任的证书-用户选项卡中。 # 在某frp服务使用你自签的证书 通常在你frp的工作目录的FrpcWorkingDirectory文件夹,例如 `C:\ProgramData\SakuraFrpService\FrpcWorkingDirectory` 先停止隧道, 将myfrp.com.crt和myfrp.com.key覆盖到此目录 然后重启隧道,观察日志和两个文件的情况。没有被覆盖说明成功了。 手机上正确导入ca.crt并正确配置frp服务的证书后,应该可以使用该服务提供的自动https进行访问并在forksilly应用中使用。例如: https://myfrp.com:12345