通过HTTPS访问Azure ubuntu虚拟机

时间:2018-12-17 01:24:59

标签: azure ssl https

我有一个在Microsoft azure上运行的Ubuntu VM。 目前,我可以使用HTTP来访问它,但是不能使用HTTPS来访问它。 在网络接口中,入站端口规则已经允许使用443。

我已经通过创建密钥库和证书将证书添加到VM中,并准备按照this documentation进行部署:

az keyvault update -n <keyvaultname> -g <resourcegroupname> --set properties.enabledForDeployment=true

然后在this answer之后添加证书。

在Azure CLI中:

$secret=$(az keyvault secret list-versions \
          --vault-name <keyvaultname> \
          --name <certname> \
          --query "[?attributes.enabled].id" --output tsv)
$vm_secret=$(az vm secret format --secret "$secret")

az vm update -n <vmname> -g <keyvaultname> --set osProfile.secrets="$vm_secret"

我遇到以下错误:

Unable to build a model: Cannot deserialize as [VaultSecretGroup] an object of type <class 'str'>, DeserializationError: Cannot deserialize as [VaultSecretGroup] an object of type <class 'str'>

但是,当我执行az vm show -g <resourcegroupname> -n <vmname>之后,在osProfile中,秘密已经包含了我添加的秘密

"secrets": [
      {
        "sourceVault": {
          "id": "/subscriptions/<subsID>/resourceGroups/<resourcegroupName>/providers/Microsoft.KeyVault/vaults/sit-key-vault"
        },
        "vaultCertificates": [
          {
            "certificateStore": null,
            "certificateUrl": "https://<keyvaultname>.vault.azure.net/secrets/<certname>/<certhash>"
          }
        ]
      }
    ],

使用HTTPS访问时失败。我可以使用HTTP访问它,但chrome仍然在地址旁边显示“不安全”标记。

我想念什么?

我还检查了answer from similar question,但是在VM控制面板页面的任何地方都找不到“启用直接服务器返回”。

1 个答案:

答案 0 :(得分:0)

据我所知,我们可以按照以下步骤为nginx服务器配置SSL。

  1. 添加SSl证书

    $ secret = $(az密钥库机密列表版本--vault-name“ keyvault_name” --name“证书名称” --query“ [?attributes.enabled] .id” --output tsv)

    $ vm_secret = $(az vm机密格式--secrets“ $ secret”)

    az vm更新-n“ VM名称” -g“资源组名称” --set osProfile.secrets =“ $ vm_secret”

  2. 安装Nginx

    sudo apt-get更新

    sudo apt-get install nginx

  3. 配置SSL证书

     #get cert name
     find /var/lib/waagent/ -name "*.prv" | cut -c -57
    
     #paste cert
     mkdir /etc/nginx/ssl
     cp “your cert name” /etc/nginx/ssl/mycert.cer
     cp “your cert name” /etc/nginx/ssl/mycert.prv
    
     #change nginx configuration file
     sudo nano /etc/nginx/sites-available/default
     PS: add the next content in the file
     server {
        listen 443 ssl;
        ssl_certificate /etc/nginx/ssl/mycert.cert;
        ssl_certificate_key /etc/nginx/ssl/mycert.prv;
               }
      service nginx restart