首页 > 其他分享 >【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤

【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤

时间:2022-12-27 18:07:04浏览次数:72  
标签:服务 cn 证书 SSL services 签名 Azure cloud

问题描述

在使用Azure Cloud Service(云服务),默认的情况下都是使用的 HTTP 服务,通过 Visual Studio 2022 创建的默认 Cloud Service项目中,在ServiceDefinition.csdef 服务定义文件中,值默认开启了HTTP 80的Endpoint。

<InputEndpoint name="Endpoint1" protocol="http" port="80" />

而如果要让云服务使用HTTPS,需要那些操作步骤呢? 在官网中,有两部分文档对此有所介绍:

第一部分:云服务证介绍和生成自签名证书 ​​https://docs.azure.cn/zh-cn/cloud-services/cloud-services-certs-create#create-a-new-self-signed-certificate​

$cert = New-SelfSignedCertificate -DnsName yourdomain.chinacloudapp.cn -CertStoreLocation "cert:\LocalMachine\My" -KeyLength 2048 -KeySpec "KeyExchange"
$password = ConvertTo-SecureString -String "your-password" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath ".\my-cert-file.pfx" -Password $password

第二部分:为云服务 配置TLS ​​https://docs.azure.cn/zh-cn/cloud-services/cloud-services-configure-ssl-certificate-portal#step-2-modify-the-service-definition-and-configuration-files​

参照以上两部分内容,就可以实现为云服务配置自签名证书。虽然通过浏览器访问时,还是会提示自签名证书不受信任,但在实验阶段已完全可用!

最终结果如下:

【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤_签名证书

 


实现步骤

第一步: 通过Windows 机器使用Powershell脚本生成 以云服务域名为主题的自签名证书 (注意:需要以管理员权限运行PowerShell)

【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤_xml_02

注意:如果没有使用管理员权限执行 New-SelfSignedCertificate 命令,则会出现权限不够的提示信息“New-SelfSignedCertificate : CertEnroll::CX509Enrollment::_CreateRequest: Access is denied. 0x80070005 (WIN32: 5 ERROR_ACCESS_DENIED)”。

证书生成完毕后,进入C:\WINDOWS\system32 目录,找到 my-cert-file.pfx 文件,双击,安装此证书到本机。最后,通过 Certmgr 证书管理工具查看证书的指纹信息(thumbprint)

【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤_xml_03

 

第二步:修改云服务配置文件,添加 Certificates , Endpoints 以及 Site Binding

参考“​​为Azure云服务配置SSL​​”文章中的第二部分,修改服务定义和配置文件。可以完全参考文档中的步骤2操作,本试验中,因为使用的是自签名证书,所以就没有有配置CA root部分。

一:修改 ServiceDefinition.csdef 文件中的 Certificates, InputEndpoint 和 Site Binding

<?xml versinotallow="1.0" encoding="utf-8"?>
<ServiceDefinition name="AzureCloudService1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WebRole name="WebRole2" vmsize="Standard_D1_v2">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
<Binding name="HttpsIn" endpointName="HttpsIn" />
</Bindings>
</Site>
</Sites>
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"/>
</ConfigurationSettings>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
<InputEndpoint name="HttpsIn" protocol="https" port="443"
certificate="SampleCertificate" />
</Endpoints>
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
<Certificates>
<Certificate name="SampleCertificate"
storeLocation="LocalMachine"
storeName="My"
permissionLevel="limitedOrElevated" />
<!-- IMPORTANT! Unless your certificate is either
self-signed or signed directly by the CA root, you
must include all the intermediate certificates
here. You must list them here, even if they are
not bound to any endpoints. Failing to list any of
the intermediate certificates may cause hard-to-reproduce
interoperability problems on some clients.-->
<!--<Certificate name="CAForSampleCertificate"
storeLocation="LocalMachine"
storeName="CA"
permissionLevel="limitedOrElevated" />-->
</Certificates>
</WebRole>
</ServiceDefinition>
  1. 在 Sites 节中添加 Binding 元素。 此元素添加 HTTPS 绑定以将终结点映射到站点
  2. 在“Endpoints”部分中添加 InputEndpoint 元素以启用 HTTPS
  3. Certificates 节定义了证书的名称、位置及其所在存储的名称

二:在服务配置文件 (CSCFG) ServiceConfiguration.Cloud.cscfg 中,添加 Certificates 值并为其指定证书的指纹(thumbprint)

<?xml versinotallow="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="AzureCloudService1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="6" osVersion="*" schemaVersion="2015-04.2.6">
<Role name="WebRole2">
<Instances count="1" />

... ...

<Certificates>
<Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="B8E0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXD6D8" thumbprintAlgorithm="sha1" />
<Certificate name="SampleCertificate"
thumbprint="deb8bff5ced1e43e0723cdf9857b6a6ca1d793b2"
thumbprintAlgorithm="sha1" />
</Certificates>
</Role>
</ServiceConfiguration>

在云服务项目文件中修改的动图说明如下:

【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤_云服务_04

 

第三步:上传第一步生成的 my-cert-file.pfx证书到 云服务的 Certificates 页面

【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤_云服务_05

在门户中,上传服务证书。 这一步需要在部署之前操作,否则会出现部署失败。失败原因为:The certificate with thumbprint deb8bff5ced1e43e0723cdf9857b6a6ca1d793b2 was not found.'

 

第四步:重新部署云服务, 然后使用https访问,而不是http

【Azure 云服务】为Azure云服务配置上自签名的SSL证书步骤_xml_06

 如果使用自签名证书,浏览到与自签名证书关联的 HTTPS 终结点时,浏览器中可能会显示一个证书错误。 使用由受信任证书颁发机构签名的证书可消除此问题;同时,你可以忽略此错误。 (也可以将自签名证书添加到用户的受信任证书颁发机构证书存储中。)

 

参考资料

云服务证介绍和生成自签名证书 : ​​https://docs.azure.cn/zh-cn/cloud-services/cloud-services-certs-create#create-a-new-self-signed-certificate​

为云服务 配置TLS : ​​https://docs.azure.cn/zh-cn/cloud-services/cloud-services-configure-ssl-certificate-portal#step-2-modify-the-service-definition-and-configuration-files​

 


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

分类: ​​【Azure 云服务】​

标签: ​​Azure 云服务​​, ​​New-SelfSignedCertificate​​, ​​ServiceDefinition.csdef​

标签:服务,cn,证书,SSL,services,签名,Azure,cloud
From: https://blog.51cto.com/u_13773780/5973085

相关文章

  • .NET Core后台服务
    提问如何创建.NETCore后台服务回答引入nugetMicrosoft.Extensions.Hosting创建服务usingActiveAlarmDemo.Models;usingMicrosoft.Extensions.Hosting;na......
  • Azure ARM (25) 自定义Role,不允许移动Azure资源
    《WindowsAzurePlatform系列文章目录》 我们把一个资源从资源组A移动到资源组B的时候,如果这时候有其他人对资源组A或者资源组B的时候,会遇到创建失败的错误,并......
  • 使用 Spring 构建 REST 服务
    REST已迅速成为在Web上构建Web服务的事实标准,因为它们易于构建和使用。关于REST如何适应微服务领域,还有更大的讨论,但是在本教程中,让我们只看一下构建RESTful服务。......
  • 通过使用阿里云容器镜像服务构建k8s下载不到的镜像
    前因:因为要搭建ingress-nginx,根据官方提供的yaml文档,里面有2处用的到的镜像是需要从registry.k8s.io下载的,虚拟机无法访问到该地址,因为我们这里使用阿里云的容器镜像服务来......
  • Arthas 查询服务器内存数据
    1、打开Arthas所在位置eg:/home2、java-jararthas-boot.jar运行jar包3、选择要执行的javajar包eg:14、执行查看命令vmtool--actiongetInstances--classNameco......
  • windows server 2016域服务器升级到server 2019
    问题1:windowsserver2016域无法升级到windowsserver2022见下图不知道各位技术大佬是否也遇到同样的问题,还请协助!问题2:windowsserver2016域服务器无法获取WSUS补丁更新......
  • Microsoft Azure解决方案:如何通过命令更改用户属性
    51CTO博客地址:​ ​​​​https://blog.51cto.com/14669127​​​Azure培训视频地址:​ ​​​https://space.bilibili.com/2000820534​​作为Azure管理员,我们习惯于使用......
  • 为什么网站需要SSL证书?什么是SSL证书?
    SSL证书也被称为服务器SSL证书,是遵守SSL协议的一种数字证书由全球信任的证书颁发机构(CA)验证服务器身份后颁发将SSL证书安装在网站服务器上,可实现网站身份验证和数据加密传......
  • Microsoft Azure 排错:Get-AzureADUser执行命令失败
    51CTO博客地址:​ ​​​​https://blog.51cto.com/14669127​​​Azure培训视频地址:​ ​​​https://space.bilibili.com/2000820534​​今天发现小伙伴运行AzureADpo......
  • 什么是SSL证书?为什么要在网站上安装SSL证书?
    SSL证书也被称为服务器SSL证书,是遵守SSL协议的一种数字证书由全球信任的证书颁发机构(CA)验证服务器身份后颁发将SSL证书安装在网站服务器上,可实现网站身份验证和数据加......