All Projects → shibayan → Appservice Acmebot

shibayan / Appservice Acmebot

Licence: apache-2.0
Automated ACME issuer for Azure App Service (Web Apps / Functions / Containers)

Projects that are alternatives of or similar to Appservice Acmebot

Letsencrypt Siteextension
Azure Web App Site Extension for easy installation and configuration of Let's Encrypt issued SSL certifcates for custom domain names.
Stars: ✭ 727 (+158.72%)
Mutual labels:  azure, azure-functions, letsencrypt
Azure Maven Plugins
Maven plugins for Azure
Stars: ✭ 203 (-27.76%)
Mutual labels:  azure, azure-functions
faaskit
A lightweight middleware framework for functions as a service
Stars: ✭ 24 (-91.46%)
Mutual labels:  azure, azure-functions
Batch Shipyard
Simplify HPC and Batch workloads on Azure
Stars: ✭ 240 (-14.59%)
Mutual labels:  azure, azure-functions
Supersafebank
Sample Event Sourcing implementation with .NET Core
Stars: ✭ 142 (-49.47%)
Mutual labels:  azure, azure-functions
Covid19radar
Open Source / i18n / iOS Android Cross Platform Contact Tracing App by exposure notification framework Xamarin App and Server Side Code
Stars: ✭ 35 (-87.54%)
Mutual labels:  azure, azure-functions
Azure Functions Python Worker
Python worker for Azure Functions.
Stars: ✭ 221 (-21.35%)
Mutual labels:  azure, azure-functions
Azure Functions Rs
Create Azure Functions with Rust!
Stars: ✭ 117 (-58.36%)
Mutual labels:  azure, azure-functions
AzureWebAppSSLManager
Acquires and manages free SSL certificates for Azure Web App and Azure Functions applications.
Stars: ✭ 70 (-75.09%)
Mutual labels:  letsencrypt, azure-functions
serverless-recipes
Compendium of Serverless samples with Azure Cosmos DB
Stars: ✭ 30 (-89.32%)
Mutual labels:  azure, azure-functions
DurableDungeon
A game designed to teach and learn serverless durable functions in C#
Stars: ✭ 55 (-80.43%)
Mutual labels:  azure, azure-functions
Azure Function Express
⚡️Allows Express.js usage with Azure Functions
Stars: ✭ 146 (-48.04%)
Mutual labels:  azure, azure-functions
Saga Orchestration Serverless
An orchestration-based saga implementation reference in a serverless architecture
Stars: ✭ 136 (-51.6%)
Mutual labels:  azure, azure-functions
Azure Functions Python Samples
Azure Functions Python Sample Codes
Stars: ✭ 266 (-5.34%)
Mutual labels:  azure, azure-functions
Serverlesslibrary
Source code for the Azure Serverless Community Library
Stars: ✭ 119 (-57.65%)
Mutual labels:  azure, azure-functions
Serverless Azure Functions
Serverless Azure Functions Plugin – Add Azure Functions support to the Serverless Framework
Stars: ✭ 213 (-24.2%)
Mutual labels:  azure, azure-functions
cortana-intelligence-customer360
This repository contains instructions and code to deploy a customer 360 profile solution on Azure stack using the Cortana Intelligence Suite.
Stars: ✭ 22 (-92.17%)
Mutual labels:  azure, azure-functions
Azure Iot Developer Kit
A curated list of awesome Azure IoT Developer Kit projects and resources.
Stars: ✭ 73 (-74.02%)
Mutual labels:  azure, azure-functions
Serverless Url Shortener
Azure Function for a URL shortening website. Uses serverless functions, Azure Table Storage and Application Insights.
Stars: ✭ 113 (-59.79%)
Mutual labels:  azure, azure-functions
Jazz
Platform to develop and manage serverless applications at an enterprise scale!
Stars: ✭ 254 (-9.61%)
Mutual labels:  azure, azure-functions

App Service Acmebot

Build Release License Terraform Registry

This is an application that automates the issuance and renewal of ACME SSL/TLS certificates for Azure App Services.

  • Support for multiple App Services
  • Easy to deploy and configure
  • Highly reliable implementation
  • Ease of Monitoring (Application Insights, Webhook)

You can add multiple certificates to a single App Service.

Announcements

How to upgrade to Acmebot v3

https://github.com/shibayan/appservice-acmebot/issues/138

Integration with Key Vault

If you need to use the certificate for a variety of services, consider using the Key Vault version of Acmebot v3.

https://github.com/shibayan/keyvault-acmebot

The Key Vault version can be used with services that support Key Vault certificates, such as App Service / Application Gateway / CDN / Front Door.

Table Of Contents

Feature Support

  • Azure Web Apps and Azure Functions (Windows)
  • Azure Web Apps (Linux) / Web App for Containers (Windows and Linux, requires Azure DNS)
  • Azure App Service Environment (Windows and Linux)
  • Issuing a certificate to the Deployment Slot
  • Issuing Certificates for Zone Apex Domains
  • Issuing certificates with SANs (subject alternative names) (one certificate for multiple domains)
  • Wildcard certificate (requires Azure DNS)
  • Support for multiple App Services in a single application
  • ACME-compliant Certification Authorities

architectural diagram

Requirements

  • Azure Subscription
  • App Service with a registered custom domain
  • Email address (required to register with Let's Encrypt)

Getting Started

1. Deploy Acmebot

For Azure Cloud

For Azure China

For Azure Government

2. Enable App Service Authentication

In the Azure Portal, open the Function blade then select the Authentication / Authorization menu and enable App Service authentication. Select the Login with Azure Active Directory as the action to perform if the request is not authenticated. We recommend using Azure Active Directory as your authentication provider, but it works with other providers as well, although it's not supported.

Enable App Service Authentication with AAD

Select Azure Active Directory as the authentication provider, select Express as the management mode, and select OK.

Create New Azure AD App

If you are using Sovereign Cloud, you may not be able to select Express. Enable authentication from the advanced settings with reference to the following document.

https://docs.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad#-configure-with-advanced-settings

Finally, you can save your previous settings to enable App Service authentication.

3. Add access control (IAM) to the target resource group

Open the Access control (IAM) of the target resource group and assign the roles Website Contributor and Web Plan Contributor to the deployed application.

Assign a role

IAM settings

Remarks

If the App Service Plan associated with the App Service exists in a separate resource group, you should assign a Website Contributor to the resource group where the App Service exists, and a Web Plan Contributor to the resource group where the App Service Plan exists.

Usage

Issuing a new certificate

Access https://YOUR-FUNCTIONS.azurewebsites.net/add-certificate with a browser and authenticate with Azure Active Directory and the Web UI will be displayed. Select the target App Service and domain from that screen and run it, and after a few tens of seconds, the certificate will be issued.

Add certificate

If the Access control (IAM) setting is not correct, nothing will be shown in the drop-down list.

Issuing a new certificate (REST API)

To automate the adding of certicates, you can use Acmebot's REST API.

POST /api/certificate

Content-Type: application/json
x-functions-key: asd+YourFunctionKeyHere+fgh==

{
  "ResourceGroupName": "your-webapp-rg",
  "AppName": "your-webapp",
  "SlotName": "production",
  "DnsNames": [
    "example.com",
    "www.example.com"
  ]
}

See also https://github.com/shibayan/keyvault-acmebot/wiki/REST-API

Issuing a wildcard certificate or a certificate for Linux

Because Azure DNS is required to issue wildcard certificates or certificates for Linux, assign the role of DNS Zone Contributor in the resource group containing the target DNS zone.

IAM settings

To issue certificates for "App Service on Linux" and "Web App for Container", Azure DNS is always required.

Renewing certificates

All existing ACME certificates are automatically renewed 30 days before their expiration.

The default check timing is 00:00 UTC. If you need to change the time zone, use WEBSITE_TIME_ZONE to set the time zone.

Deploying a new version

The application is automatically updated so that you are always up to date with the latest version. If you explicitly need to deploy the latest version, restart the Azure Function.

In case you want to use your own web.config

You can prevent Acmebot from creating a web.config by creating your own web.config and configured files in the site/.well-known directory.

Troubleshooting

Azure REST API error at GetSite or Dns01Precondition error

The role assignment to the target resource group may be incorrect or not yet active. It may take up to 30 minutes for the IAM settings to take effect.

CheckDnsChallenge failed: _acme-challenge.{domain}.com value is not correct

In order for the certificate to be created, the Acmebot needs to create a TXT DNS record for _acme-challenge in Azure DNS. This error occurs when the TXT record isn't being served. One cause of this may be that the nameservers for your domain may be pointing to the domain registrar, rather than Azure DNS. Make sure that you have properly delegated the domain to Azure DNS: Host your domain in Azure DNS

CheckHttpChallenge failed: http://{domain}/.well-known/acme-challenge/{challenge} is InternalServerError status code

This seems like an URL rewrite error. Try setting inheritInChildApplications="false" in the web.config under wwwroot.

https://www.hanselman.com/blog/ChangingASPNETWebconfigInheritanceWhenMixingVersionsOfChildApplications.aspx

Thanks

License

This project is licensed under the Apache License 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].