forked from littlebizzy/slickstack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ss-install-nginx-openssl.txt
118 lines (91 loc) · 5.83 KB
/
ss-install-nginx-openssl.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/bin/bash
####################################################################################################
#### author: SlickStack ############################################################################
#### link: https://slickstack.io ###################################################################
#### mirror: https://mirrors.slickstack.io/bash/ss-install-nginx-openssl.txt #######################
#### path: /var/www/ss-install-nginx-openssl #######################################################
#### destination: n/a (not a boilerplate) ##########################################################
#### purpose: Reinstalls OpenSSL certificate to Nginx (idempotent) ##########
#### module version: Nginx 1.18.x ##################################################################
#### sourced by: ss-install-nginx ##################################################################
#### bash aliases: ss install nginx openssl ############################################################
####################################################################################################
## SS-CONFIG MUST BE PROPERLY CONFIGURED AND ON CURRENT BUILD BEFORE RUNNING SS-INSTALL ##
## ENSURE YOUR SS-CONFIG BUILD REMAINS CURRENT BY RUNNING SS-UPDATE OCCASIONALLY ##
## source ss-config ##
source /var/www/ss-config
## source ss-functions ##
source /var/www/ss-functions
## BELOW THIS RELIES ON SS-CONFIG AND SS-FUNCTIONS
####################################################################################################
#### SS-Install-Nginx-SSL: Message (Begin Script) ##################################################
####################################################################################################
## this is a simple message that announces to the shell the purpose of this bash script ##
## it will only be noticed by sudo users who manually call ss core bash scripts ##
## echo message ##
echo -e "${PURPLE}Running ss-install-nginx-openssl: Reinstalls OpenSSL certificate to Nginx (idempotent)... ${NOCOLOR}"
sleep "$SLEEP_MESSAGE_BEGIN"
####################################################################################################
#### SS-Install-Nginx-SSL: Install Preferred SSL Certificate (Per SS-Config) #######################
####################################################################################################
## here we update the Nginx config files to activate either OpenSSL or Lets Encrypt SSL ##
## this depends on your ss-config settings (both certs should exist regardless) ##
## retrieve Lets Encrypt and OpenSSL sub-config file ##
wget -O /tmp/openssl.conf "$MIRROR_OPENSSL_CONF"
## SEARCH AND REPLACE SSL SETTINGS ##
## SSL protocols ##
if [[ -z "$SSL_PROTOCOLS" ]]; then
sed -i "s/@SSL_PROTOCOLS/TLSv1.2 TLSv1.3/g" /tmp/openssl.conf
else
sed -i "s/@SSL_PROTOCOLS/${SSL_PROTOCOLS}/g" /tmp/openssl.conf
fi
## SSL ciphers ##
if [[ -z "$SSL_CIPHERS" ]]; then
sed -i "s/@SSL_CIPHERS/ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384/g" /tmp/openssl.conf
else
sed -i "s/@SSL_CIPHERS/${SSL_CIPHERS}/g" /tmp/openssl.conf
fi
## SSL session timeout ##
if [[ -z "$SSL_SESSION_TIMEOUT" ]]; then
sed -i "s/@SSL_SESSION_TIMEOUT/1d/g" /tmp/openssl.conf
else
sed -i "s/@SSL_SESSION_TIMEOUT/${SSL_SESSION_TIMEOUT}/g" /tmp/openssl.conf
fi
## SSL session cache ##
if [[ -z "$SSL_SESSION_CACHE" ]]; then
sed -i "s/@SSL_SESSION_CACHE/shared:SSL:64m/g" /tmp/openssl.conf
else
sed -i "s/@SSL_SESSION_CACHE/${SSL_SESSION_CACHE}/g" /tmp/openssl.conf
fi
## SSL buffer size ##
if [[ -z "$SSL_BUFFER_SIZE" ]]; then
sed -i "s/@SSL_BUFFER_SIZE/16k/g" /tmp/openssl.conf
else
sed -i "s/@SSL_BUFFER_SIZE/${SSL_BUFFER_SIZE}/g" /tmp/openssl.conf
fi
## here we modify the live Nginx configuration files to activate Lets Encrypt certificates ##
## this snippet will only be executed if Lets Encrypt certs appear to be successful ##
## copy SSL sub-config file to /etc/nginx/conf.d/ and delete conflicting files ##
cp /tmp/openssl.conf /etc/nginx/conf.d/openssl.conf
rm /etc/nginx/conf.d/letsencrypt.conf*
echo -e "${PURPLE}OpenSSL installation appears to have been successful. ${NOCOLOR}"
####################################################################################################
#### SS-Install-Nginx-SSL: Reset Permissions (Nginx SSL) ###########################################
####################################################################################################
## run ss-perms-nginx-ssl ##
source "$PATH_SS_PERMS_NGINX_SSL"
####################################################################################################
#### SS-Install-Nginx-OpenSSL: Touch Timestamp File (End Script) ###################################
####################################################################################################
## this is a dummy timestamp file that will remember the last time this script was run ##
## it can be useful for developer reference and is sometimes used by SlickStack ##
## script timestamp ##
touch "$TIMESTAMP_SS_INSTALL_NGINX_OPENSSL"
####################################################################################################
#### SlickStack: External References Used To Improve This Script (Thanks, Interwebz) ###############
####################################################################################################
## Ref: https://github.com/littlebizzy/slickstack/blob/master/ss-install-nginx-config.txt
## Ref: https://github.com/littlebizzy/slickstack/blob/master/ss-encrypt-openssl.txt
## Ref: https://github.com/littlebizzy/slickstack/blob/master/ss-encrypt-certbot.txt
## Ref: https://serverfault.com/questions/886943/ssl-for-multiple-servers-and-sub-domains
## SS_EOF