Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] 宝塔站点和管理后台证书设置 #450

Open
fcwys opened this issue Feb 12, 2025 · 4 comments
Open

[Feature] 宝塔站点和管理后台证书设置 #450

fcwys opened this issue Feb 12, 2025 · 4 comments
Labels
backlog Todo enhancement New feature or request

Comments

@fcwys
Copy link

fcwys commented Feb 12, 2025

功能描述
希望完善支持宝塔站点和管理面板设置证书接口。最新测试版宝塔这个接口只针对PHP站点有效,新接口是/ssl?action=SetBatchCertToSite,此接口支持所有类型站点设置,可考虑再流程编排输入框支持分号设置多个站点。
设置宝塔站点证书流程如下:
1、上传SSL证书到宝塔,获取证书hash;
2、通过新接口绑定证书到站点(支持批量);

上传证书接口信息(POST):
路径:/ssl/cert/save_cert
请求表单参数:

key: "证书key内容"
csr: "证书内容"

响应示例:

{
    "status": true,
    "msg": "保存成功",
    "creat_order": false,
    "ssl_hash": "41580efa96e96744665a12a08e784c79"	# 证书hash,下文接口使用
}

设置站点证书接口信息(POST):
路径:/ssl?action=SetBatchCertToSite
请求表单参数:

BatchInfo: [
{
        "ssl_hash": "证书hash",
        "siteName": "站点名称1",
        "certName": "证书名称(经过测试可不传)"
    },
	{
        "ssl_hash": "证书hash",
        "siteName": "站点名称2",
        "certName": "证书名称(经过测试可不传)"
    }
]

响应示例:

{
    "total": 1,		# 设置站点数
    "success": 1,	# 成功站点数
    "faild": 0,		# 失败站点数
    "successList": [	# 成功站点列表
        {
            "status": true,
            "certName": "*.aaa.com",
            "siteName": "demo.aaa.com"
        }
    ],
    "faildList": [
		# 失败站点列表
	]
}

设置面板SSL接口信息(POST):
路径:/config?action=SavePanelSSL
请求表单参数:

privateKey: "证书key内容"
certPem: "证书内容"

响应示例:

{
    "status": true,
    "msg": "证书已保存!"
}

动机
目前最新测试版已实现宝塔站点设置,但不够完善 #448 #434

替代方案

其他信息
最新测试版0.3.0-alpha.12设置宝塔站点失败截图:
Image

@fcwys fcwys added the enhancement New feature or request label Feb 12, 2025
@fudiwei fudiwei added the backlog Todo label Feb 12, 2025
@fudiwei
Copy link
Collaborator

fudiwei commented Feb 12, 2025

/site?action=SetSSL 这个接口是已经没有了吗?

@fcwys
Copy link
Author

fcwys commented Feb 12, 2025

/site?action=SetSSL 这个接口是已经没有了吗?

经过这几天测试这个接口仅针对PHP分类站点有效,其他分类会报错。我自己用python写的工具,目前使用上传然后绑定的接口测试是正常的,新接口批量绑定站点也比较方便,所以建议使用新接口。
此外,如果可能,选择部署站点建议从接口获取站点列表,采用多选下拉框的方式(如下图)会更方便

Image

获取证书匹配的站点接口:/ssl?action=GetSiteDomain
请求表单(证书域名):

cert_list: ["*.aaa.com","aaa.com"]

响应示例:

{
    "all": [   // 这里是所有的站点列表
        "a.aaa.com",
        "b.aaa.com",
        "a.abc.com",
        "www.bbb.com",
        "demosite"
    ],
    "site": [     // 这里是证书匹配的站点列表
        "a.aaa.com",
        "b.aaa.com",
        "demosite"
    ]
}

宝塔SSL绑定站点页面:

Image

Image

@fudiwei
Copy link
Collaborator

fudiwei commented Feb 13, 2025

经过这几天测试这个接口仅针对PHP分类站点有效,其他分类会报错。

报错内容就是截图里的那个是 404 是吗?按我的理解这种 API 接口即便报错,也不应该是返回一个 404 的 HTML 页面才对。

@fcwys
Copy link
Author

fcwys commented Feb 13, 2025

404这个是我用最新版测试的,不知道为啥是404,我的面板接口是类似 https://bt.aaa.com:9000 这种格式,不知道是不是识别有啥问题,接口白名单也加了。

新老接口这个是我Python暂时写的小工具设置证书测试的。

另外可否了解下您那边使用这个接口是宝塔哪个版本呢?
我目前使用的是宝塔9.4.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backlog Todo enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants