Examples
Local HTTPS

This guide will walk you through how to set up your local dev environment to serve traffic over HTTPS, using an example app.

The example app has two endpoints:

  • / mimics a web application by rendering a simple HTML page.
  • /api mimics an API endpoint by returning a simple JSON response.

Click a language to see its example:

Clone the Example App

This example uses the go-demo example app (opens in a new tab), which already has Anchor setup for local HTTPS. First clone the app to your local environment:

git clone https://github.com/anchordotdev/go-demo.git

and move into the root of the app:

cd go-demo

Set Up the App as a Service in Anchor

In Anchor everything centers on the service being encrypted. A service can be anything with a TLS endpoint like an API, web application, or database. In this example the service being set up is the go-demo web application that you just cloned.

To create a service, register (opens in a new tab) or login (opens in a new tab) to your Anchor account.

After signing in, go to the Anchor Dashboard (opens in a new tab) and click New Service.

new-services-button

Next, under "Service Details" enter go-demo for the service name and select Go as the server type. Leave the defaults for the rest of the values and then click Create Service.

services-form

This brings up the Setup Guide, which walks through the remaining steps to serve HTTPS traffic locally. Note: some of the steps from the Setup Guide are already implemented in the example app so you will skip them.

Add the Environment Variables

Skip to Step 2, Server setup, to add environmental variables to your .env file. By adding the variables to your .env, you will be able to refresh or close your browser and localhost without losing the encryption configuration.

Click the Generate your first set of tokens for this service... button to generate an ACME_KID and ACME_HMAC_KEY and add those to the .env file.

Then copy the ACME_DIRECTORY_URL, ADDR, and HOST and add them to the .env file.

generate-tokens

Your .env file will look like this:

.env
# These env vars can be found in the setup guide after a "go-demo" service is created in Anchor.
ACME_KID=aae_asBp_jHiGM0xIoIWmb3beaDKX0HGqgM2zf9rE5KhI_rt
ACME_HMAC_KEY=2Aa7vJ5eg6p4mLaDvCy55XNGlzbQ83fEG-OaDqQsRodE91-gTmEFrd50s9Ekxvsu
ACME_DIRECTORY_URL='https://anchor.dev/stolt45/localhost/x509/ca/acme'
ADDR=':44369'
HOST=go-demo.lcl.host
 
#Optional, used for setting up a service-to-service demo.
#BACKEND_URL=https://rails-demo.lcl.host:44386/api
#BACKEND_URL=https://go-demo.lcl.host:44369/api

This app is setup with godotenv which instructs Go to automatically load variables from the .env file in the root of the application. These environment variables can also be exported directly to your dev environment.

Update your System Trust Store

Use the Anchor CLI toolchain to update your system's local trust store so that your browser recognizes the certificate that the go-demo application presents.

Run the anchor trust command:

anchor trust

If you haven't already installed and logged into the Anchor CLI you'll have to do that first. Commands for doing that are in the Setup Guide.

Visit the App in a Browser

Start the app by running:

go run ./main.go

go-start

The app is now running on https://go-demo.lcl.host:[PORT], where [PORT] is specified in the .env file. Note: The specific port for your app will be different.

Load the site in your browser over HTTPS.

go-demo

You are now rocking local encryption!

Up Next

Next, follow the guide for a Service-to-Service example with a client.