使用Python创建Azure证书

时间:2019-01-19 16:33:19

标签: azure ssl-certificate

我正在使用Python自动为Azure应用程序(AKS群集)创建App Service Cerficate。我需要进行的REST调用之一如下:

https://docs.microsoft.com/en-us/rest/api/appservice/appservicecertificateorders/createorupdate

这描述了创建App Service证书订单所需的调用,然后将其结果传递给REST调用以创建App Service证书。

我的问题是我无法从稀疏的文档中找出此REST调用的请求正文中需要什么。我已经建立了一个看起来像这样的结构:

request_body = {
    "location" : "eastus",
    "properties" : {
        "autoRenew" : true,
        "productType" : "StandardDomainValidatedSsl",
        "distinguishedName": "???",
        "csr": "???"
    }
}

我一直无法弄清楚这最后两个字段需要什么。 csr字段被描述为“为此订单创建的最后CSR”,其中CSR指的是证书签名请求。这种措辞的方式意味着曾经有过CSR,但这是一个新的要求,在此我没有什么可填写的。如果我尝试将distguishedName和csr都保留为空白,则呼叫会抱怨。我尝试用openssl创建CSR并将csr字段设置为所创建的值,但似乎不喜欢它。我假设的distinquishedName字段应该类似于

"CN=mydomain.com,C=US,ST=California,..."

但是它总是抱怨我提供的任何东西都是无效的。

我已经进行了一些搜索,但找不到该REST调用所需的示例。如果有人可以指出一些示例代码或其他文档,我将不胜感激。谢谢。

彼得

2 个答案:

答案 0 :(得分:1)

我最终确定此组合有效:

{
    "location": "global",
    "properties": {
        "productType": "StandardDomainValidatedSsl",
        "autoRenew": true,
        "distinguishedName":"CN=mysubdomain.mydomain.com"
    }
}

事实证明,不需要csr字段;由于进行此REST调用而返回一个。这只是证书创建过程的第一步。此时,请求处于待处理状态,仍然需要验证。

答案 1 :(得分:0)

CSR类似于:

  internal var theLayout: UICollectionViewFlowLayout {
    return (buttonsView.collectionViewLayout as? UICollectionViewFlowLayout)!
  }

      internal func prepareLayout() {
    let spacing = buttonTheme.spacing * 2.0

//    let theLayout = UICollectionViewFlowLayout()
    theLayout.invalidateLayout()

    buttonsView.frame = viewModel.frame
    theLayout.itemSize = itemSize
    theLayout.minimumInteritemSpacing = spacing
    theLayout.minimumLineSpacing = spacing

    buttonsView.contentInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing)

//    buttonsView.performBatchUpdates({
      buttonsView.setCollectionViewLayout(theLayout, animated: true)
      self.buttonsView.reloadData()
//    }, completion: nil)

    buttonsView.setCollectionViewLayout(theLayout, animated: true)
  }