Interruption HTTPS sur les EC2 instances Amazon en cours d'exécution. NET - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Interruption HTTPS sur les EC2 instances Amazon en cours d'exécution. NET

Le fichier de configuration suivant crée et exécute un PowerShell script Windows qui exécute les tâches suivantes :

  • Vérifie la présence d'un HTTPS certificat existant lié au port 443.

  • Obtient le PFXcertificat depuis un compartiment Amazon S3.

    Note

    Ajoutez une AmazonS3ReadOnlyAccess politique au aws-elasticbeanstalk-ec2-role pour accéder au SSL certificat dans le compartiment Amazon S3.

  • Récupère le mot de passe de AWS Secrets Manager.

    Note

    Ajoutez une instruction aws-elasticbeanstalk-ec2-role qui autorise l'secretsmanager:GetSecretValueaction pour le secret qui contient le mot de passe du certificat

  • Installe le certificat.

  • Lie le certificat au port 443.

    Note

    Pour supprimer le HTTP point de terminaison (port 80), incluez la Remove-WebBinding commande dans la section Supprimer la HTTP liaison de l'exemple.

Exemple extensions .eb/ .config https-instance-dotnet
files: "C:\\certs\\install-cert.ps1": content: | import-module webadministration ## Settings - replace the following values with your own $bucket = "amzn-s3-demo-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

Dans un environnement à instance unique, vous devez également modifier le groupe de sécurité de l'instance pour autoriser le trafic sur le port 443. Le fichier de configuration suivant récupère l'ID du groupe de sécurité à l'aide d'une AWS CloudFormation fonction et y ajoute une règle.

Exemple extensions .eb/ .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

Dans un environnement à équilibrage de charge, vous configurez l'équilibreur de charge pour qu'il fasse passer le trafic sécurisé sans le toucher, soit pour le déchiffrer et le rechiffrer à des fins de chiffrement. end-to-end