【问题标题】:Activate SSL-Certificate on Domain via Plesk XML API通过 Plesk XML API 在域上激活 SSL 证书
【发布时间】:2015-01-09 19:33:43
【问题描述】:

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

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

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

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

关于the manual

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

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

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

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

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

【问题讨论】:

    标签: xml-rpc plesk zend-xmlrpc


    【解决方案1】:

    这里是请求示例:

    <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 没有完整记录,有一些“属性”,但显然不是全部。还有一个注释

    注意:要管理主机设置,您应该首先检索主机 设置描述符,包含设置的名称。为了 详情请参考Retrieving Descriptor of Hosting Settings 部分。

    通过这个新链接,我们可以找到如何检索我们找到“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>
    

    【讨论】:

    • 谢谢!我真的很惭愧,我没有在手册中找到它:-/
    • 嗯,这真的不容易,我已经更新了答案来描述我是如何找到这个参数名称的。
    【解决方案2】:

    我正在使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2015-06-21
      • 2021-06-20
      • 2021-01-22
      • 1970-01-01
      相关资源
      最近更新 更多