azure - 对 Azure ubuntu 虚拟机的 HTTPS 访问
问题描述
我有一个在 Microsoft azure 上运行的 Ubuntu VM。目前我可以使用 HTTP 访问它,但不能使用 HTTPS。在网络接口,入站端口规则,443 已经被允许。
我已经在虚拟机中添加了一个证书,通过创建一个密钥库和一个证书,按照本文档准备部署:
az keyvault update -n <keyvaultname> -g <resourcegroupname> --set properties.enabledForDeployment=true
然后在这个答案之后添加了证书。
在 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 仍然在地址旁边显示“不安全”标记。
我错过了什么?
我还检查了类似问题的答案,但在 VM 控制面板页面的任何地方都找不到“启用直接服务器返回”。
解决方案
据我所知,我们可以按照以下步骤为 nginx 服务器配置 SSL。
添加 SSL 证书
$secret=$(az keyvault secret list-versions --vault-name "keyvault_name" --name "cert name" --query "[?attributes.enabled].id" --output tsv)
$vm_secret=$(az vm 密钥格式 --secrets "$secret")
az vm update -n “虚拟机名称” -g “资源组名称” --set osProfile.secrets="$vm_secret"
安装 Nginx
sudo apt-get 更新
sudo apt-get 安装 nginx
配置 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
推荐阅读
- php - 如何查询 Solr apache php 数组一个值
- javascript - Javascript:从 src url 的 img 标签下载图像仅支持一次请求并被 crossOrigin 污染
- swift - 如何在 Swift 中更改 Core Data 的并发类型
- c# - 我没有按回车键,但 ReadLine() 说我做到了(不小心让你无法回答旧的,所以重新发布)
- html - css滚动条超过元素大小
- javascript - 在 Tabulator.js 中移动行时自动滚动
- iis - .NET5 Windows 身份验证提示
- java - 有没有一种方法可以在 android studio 中为一个 Activity 使用两个或更多类?
- sql - 雪花 - 如何多行注释
- postgresql - Postgres 单表查询返回带有大 in 子句的重复项