5

我目前正在开发一个用于自动获取和安装 SSL 证书的 Plesk-Panel 插件。借助 Parallels 提供的非常强大的XML API,我可以将证书安装到 Plesks SSL Cert-Pool。

也可以为特定页面打开 SSL,但我绝对找不到激活特定证书的方法(当然,它已经添加到证书池中)。

最简单的答案当然是“API 不支持它”,但使用以下命令通过命令行实用程序很容易做到这一点:

/opt/psa/bin/subscription -u example.com -certificate-name my_cool_ssl_cert

关于手册

命令行界面 (CLI) 具有与 API RPC 相同的功能

这是相对明显的,因为它们在其他任何地方都具有相同的功能。

那么我错过了什么?以前有人做过吗?

如果没有通过 XML-API 激活特定的可能性,许多调用将完全没有意义(可以安装 CERT,激活 ssl 但不能激活它?真的不敢相信。)

我非常感谢任何为我指明正确方向的答案/评论,在此先感谢!

4

2 回答 2

3

这里是请求示例:

<packet>
    <webspace>
        <set>
            <filter>
                <id>34</id>
            </filter>
            <values>
                <hosting>
                    <vrt_hst>

                        <property>

                            <name>certificate_name</name>

                            <value>some_existed_certificate_name</value>

                        </property>

                    </vrt_hst>
                </hosting>
            </values>
        </set>  
    </webspace>
</packet>

主要规则是,如果在 CLI 中它是一个“订阅”设置,那么我们转到“管理订阅(网络空间)”->“设置订阅参数”,我们总是必须检查“请求数据包结构”。从数据包结构我们猜测我们的 SSL 设置应该在托管部分并且有一个链接,所以我们要

http://download1.parallels.com/Plesk/PP12/12.0/Doc/en-US/online/plesk-api-rpc/39967.htm

但是我们看到这部分 API 没有完整记录,有一些“属性”,但显然不是全部。并且有一个注释

注意:要管理主机设置,您应该首先检索包含设置名称的主机设置描述符。有关详细信息,请参阅检索托管设置的描述符 部分。

通过这个新链接,我们可以找到如何检索我们找到“certificate_name”的所有托管属性名称的列表。

对于插件域或子域,您可以使用以下查询:

<packet>
    <site>
        <set>
            <filter>
                <id>3</id>
            </filter>
            <values>
                <hosting>
                    <vrt_hst>

                        <property>

                            <name>certificate_name</name>

                            <value>some_existed_certificate_name</value>

                        </property>

                    </vrt_hst>
                </hosting>
            </values>
        </set>  
    </site>
</packet>
于 2015-01-10T07:09:12.640 回答
0

我正在使用 REST API 来创建子域,并且工作得很好而且..它的设置方式更清晰..您可能找不到足够的文档,但是如果您尝试一些事情,您会发现它工作得很好..我也认为更快但是这不是重点..所以这就是我安装 SSL、ftp 用户、PHP 版本等的方法。

$new_store = array(
  "name"              => newstore.sudbomain.com,
  "description"       => 'New store example',
  "hosting_type"      => 'virtual',

  'hosting_settings'  => array(
    "www_root"        => 'Clients/newstore.sudbomain.com,
    'ftp_login'       => $this->_ftp_user,
    'ftp_password'    => $this->_ftp_pass,
    'php'             => true,
    'php_handler_id'  => 'plesk-php80-fpm',
    'certificate_name'=> 'WildCardSSL'
  ),

  "parent_domain"       => array(
    "id"              => $this->_ng_id,
    "name"            => $this->_ng_name,
    "guid"            => $this->_ng_guid
  ),

  "ip_addresses"      => ["XXX.XXX.XXX.XXX"],
  "ipv4"              => ["XXX.XXX.XXX.XXX"],
  "ipv6"              => ["xxxx:xxx:xxx:xxxx::x"]

);

$body = json_encode($new_store, JSON_UNESCAPED_UNICODE);

$this->api_call('domains', $body, $response, $error);
// 'domains' is the endpoint
// $body is the json
// $response is the returned json response
// $error is errors returned from the curl command
于 2021-09-20T08:40:49.993 回答