Skip to content

Commit 640e492

Browse files
ImTotemclaude
andcommitted
refactor(infra): single SAN certificate for all domains
- All HTTPS blocks share one cert path: /etc/letsencrypt/live/bcsdlab.com/ - init-ssl.sh requests one certificate with all domains via --cert-name - Simplifies renewal (one cert to renew instead of three) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 7df8926 commit 640e492

File tree

2 files changed

+16
-34
lines changed

2 files changed

+16
-34
lines changed

infra/nginx/bcsd-api.conf

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ server {
3838
listen 443 ssl http2;
3939
server_name api.bcsdlab.com;
4040

41-
ssl_certificate /etc/letsencrypt/live/api.bcsdlab.com/fullchain.pem;
42-
ssl_certificate_key /etc/letsencrypt/live/api.bcsdlab.com/privkey.pem;
41+
ssl_certificate /etc/letsencrypt/live/bcsdlab.com/fullchain.pem;
42+
ssl_certificate_key /etc/letsencrypt/live/bcsdlab.com/privkey.pem;
4343

4444
ssl_protocols TLSv1.2 TLSv1.3;
4545
ssl_ciphers HIGH:!aNULL:!MD5;
@@ -78,8 +78,8 @@ server {
7878
listen 443 ssl http2;
7979
server_name internal.bcsdlab.com stage.bcsdlab.com;
8080

81-
ssl_certificate /etc/letsencrypt/live/stage.bcsdlab.com/fullchain.pem;
82-
ssl_certificate_key /etc/letsencrypt/live/stage.bcsdlab.com/privkey.pem;
81+
ssl_certificate /etc/letsencrypt/live/bcsdlab.com/fullchain.pem;
82+
ssl_certificate_key /etc/letsencrypt/live/bcsdlab.com/privkey.pem;
8383

8484
ssl_protocols TLSv1.2 TLSv1.3;
8585
ssl_ciphers HIGH:!aNULL:!MD5;
@@ -128,8 +128,8 @@ server {
128128
listen 443 ssl http2;
129129
server_name n8n.bcsdlab.com;
130130

131-
ssl_certificate /etc/letsencrypt/live/n8n.bcsdlab.com/fullchain.pem;
132-
ssl_certificate_key /etc/letsencrypt/live/n8n.bcsdlab.com/privkey.pem;
131+
ssl_certificate /etc/letsencrypt/live/bcsdlab.com/fullchain.pem;
132+
ssl_certificate_key /etc/letsencrypt/live/bcsdlab.com/privkey.pem;
133133

134134
ssl_protocols TLSv1.2 TLSv1.3;
135135
ssl_ciphers HIGH:!aNULL:!MD5;

infra/scripts/init-ssl.sh

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ fi
77

88
NGINX_AVAILABLE="/etc/nginx/sites-available/bcsd-api.conf"
99
NGINX_ENABLED="/etc/nginx/sites-enabled/bcsd-api.conf"
10+
CERT_NAME="bcsdlab.com"
1011
DOMAIN="${DOMAIN:?Set DOMAIN in .env}"
1112
N8N_DOMAIN="${N8N_DOMAIN}"
1213
FRONTEND_DOMAIN="${FRONTEND_DOMAIN}"
1314

14-
DOMAINS="$DOMAIN"
15-
[ -n "$N8N_DOMAIN" ] && DOMAINS="$DOMAINS $N8N_DOMAIN"
16-
[ -n "$FRONTEND_DOMAIN" ] && DOMAINS="$DOMAINS $FRONTEND_DOMAIN internal.bcsdlab.com"
15+
DOMAIN_ARGS="-d $DOMAIN"
16+
SERVER_NAMES="$DOMAIN"
17+
[ -n "$N8N_DOMAIN" ] && DOMAIN_ARGS="$DOMAIN_ARGS -d $N8N_DOMAIN" && SERVER_NAMES="$SERVER_NAMES $N8N_DOMAIN"
18+
[ -n "$FRONTEND_DOMAIN" ] && DOMAIN_ARGS="$DOMAIN_ARGS -d $FRONTEND_DOMAIN -d internal.bcsdlab.com" && SERVER_NAMES="$SERVER_NAMES $FRONTEND_DOMAIN internal.bcsdlab.com"
1719

1820
echo "=== Initial SSL Certificate Setup ==="
1921

@@ -22,7 +24,7 @@ sudo mkdir -p /var/www/certbot
2224
cat <<EOF | sudo tee "$NGINX_AVAILABLE" > /dev/null
2325
server {
2426
listen 80;
25-
server_name $DOMAINS;
27+
server_name $SERVER_NAMES;
2628
2729
location /.well-known/acme-challenge/ {
2830
root /var/www/certbot;
@@ -36,36 +38,16 @@ EOF
3638
sudo ln -sf "$NGINX_AVAILABLE" "$NGINX_ENABLED"
3739
sudo nginx -t && sudo nginx -s reload
3840

39-
echo "2. Requesting certificate for $DOMAIN..."
41+
echo "2. Requesting certificate for: $SERVER_NAMES"
4042
sudo certbot certonly \
4143
--webroot \
4244
-w /var/www/certbot \
43-
-d "$DOMAIN" \
45+
--cert-name "$CERT_NAME" \
46+
$DOMAIN_ARGS \
4447
--register-unsafely-without-email \
4548
--agree-tos
4649

47-
if [ -n "$N8N_DOMAIN" ]; then
48-
echo "3. Requesting certificate for $N8N_DOMAIN..."
49-
sudo certbot certonly \
50-
--webroot \
51-
-w /var/www/certbot \
52-
-d "$N8N_DOMAIN" \
53-
--register-unsafely-without-email \
54-
--agree-tos
55-
fi
56-
57-
if [ -n "$FRONTEND_DOMAIN" ]; then
58-
echo "4. Requesting certificate for $FRONTEND_DOMAIN (+ internal.bcsdlab.com)..."
59-
sudo certbot certonly \
60-
--webroot \
61-
-w /var/www/certbot \
62-
-d "$FRONTEND_DOMAIN" \
63-
-d internal.bcsdlab.com \
64-
--register-unsafely-without-email \
65-
--agree-tos
66-
fi
67-
68-
echo "5. Installing full nginx config with HTTPS..."
50+
echo "3. Installing full nginx config with HTTPS..."
6951
sudo cp infra/nginx/bcsd-api.conf "$NGINX_AVAILABLE"
7052
sudo nginx -t && sudo nginx -s reload
7153

0 commit comments

Comments
 (0)