Encerrar o HTTPS em instâncias do Amazon EC2 que executam o .NET - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Encerrar o HTTPS em instâncias do Amazon EC2 que executam o .NET

O arquivo de configuração a seguir cria e executa um PowerShell script do Windows que executa as seguintes tarefas:

  • Verifica se há uma associação de certificado HTTPS existente à porta 443.

  • Obtém o certificado PFX de um bucket do Amazon S3.

    nota

    Adicione uma AmazonS3ReadOnlyAccess política ao aws-elasticbeanstalk-ec2-role para acessar o certificado SSL no bucket do Amazon S3.

  • Obtém a senha de AWS Secrets Manager.

    nota

    Adicione uma declaração aws-elasticbeanstalk-ec2-role que permita a secretsmanager:GetSecretValue ação do segredo que contém a senha do certificado

  • Instala o certificado.

  • Vincula o certificado à porta 443.

    nota

    Para remover o endpoint HTTP (porta 80), inclua o comando Remove-WebBinding na seção Remova a vinculação HTTP do exemplo.

exemplo .ebextensions/ .config https-instance-dotnet
files: "C:\\certs\\install-cert.ps1": content: | import-module webadministration ## Settings - replace the following values with your own $bucket = "DOC-EXAMPLE-BUCKET" ## S3 bucket name $certkey = "example.com.pfx" ## S3 object key for your PFX certificate $secretname = "example_secret" ## AWS Secrets Manager name for a secret that contains the certificate's password ## # Set variables $certfile = "C:\cert.pfx" $pwd = Get-SECSecretValue -SecretId $secretname | select -expand SecretString # Clean up existing binding if ( Get-WebBinding "Default Web Site" -Port 443 ) { Echo "Removing WebBinding" Remove-WebBinding -Name "Default Web Site" -BindingInformation *:443: } if ( Get-Item -path IIS:\SslBindings\0.0.0.0!443 ) { Echo "Deregistering WebBinding from IIS" Remove-Item -path IIS:\SslBindings\0.0.0.0!443 } # Download certificate from S3 Read-S3Object -BucketName $bucket -Key $certkey -File $certfile # Install certificate Echo "Installing cert..." $securepwd = ConvertTo-SecureString -String $pwd -Force -AsPlainText $cert = Import-PfxCertificate -FilePath $certfile cert:\localMachine\my -Password $securepwd # Create site binding Echo "Creating and registering WebBinding" New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https New-Item -path IIS:\SslBindings\0.0.0.0!443 -value $cert -Force ## Remove the HTTP binding ## (optional) Uncomment the following line to unbind port 80 # Remove-WebBinding -Name "Default Web Site" -BindingInformation *:80: ## # Update firewall netsh advfirewall firewall add rule name="Open port 443" protocol=TCP localport=443 action=allow dir=OUT commands: 00_install_ssl: command: powershell -NoProfile -ExecutionPolicy Bypass -file C:\\certs\\install-cert.ps1

Em um ambiente de instância única, você também deve modificar o grupo de segurança da instância para habilitar o tráfego na porta 443. O arquivo de configuração a seguir recupera a ID do grupo de segurança usando uma AWS CloudFormation função e adiciona uma regra a ela.

exemplo .ebextensions/ .config https-instance-single
Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0

Para um ambiente com balanceamento de carga, você configura o balanceador de carga para passar tráfego seguro intocado ou descriptografar e recriptografar para criptografia. end-to-end