Skip to content

Commit cd21b31

Browse files
author
Serghey Rodin
committed
LetsEncrypt support for IDN domains
1 parent b110596 commit cd21b31

File tree

4 files changed

+20
-19
lines changed

4 files changed

+20
-19
lines changed

bin/v-add-letsencrypt-domain

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ source $VESTA/func/main.sh
2626
source $VESTA/func/domain.sh
2727
source $VESTA/conf/vesta.conf
2828

29+
# Additional argument formatting
30+
format_domain_idn
31+
2932

3033
#----------------------------------------------------------#
3134
# Verifications #

bin/v-check-letsencrypt-domain

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111

1212
# Argument definition
1313
user=$1
14-
domain=$(idn -t --quiet -u "$2" )
15-
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
14+
domain=$2
1615

1716
# Includes
1817
source $VESTA/func/main.sh
@@ -23,6 +22,9 @@ encode_base64() {
2322
cat |base64 |tr '+/' '-_' |tr -d '\r\n='
2423
}
2524

25+
# Additional argument formatting
26+
format_domain_idn
27+
2628

2729
#----------------------------------------------------------#
2830
# Verifications #
@@ -64,7 +66,7 @@ protected=$(echo -n '{"nonce":"'"$nonce"'"}' |encode_base64)
6466

6567
# Defining ACME query (request challenge)
6668
query='{"resource":"new-authz","identifier"'
67-
query=$query':{"type":"dns","value":"'"$domain"'"}}'
69+
query=$query':{"type":"dns","value":"'"$domain_idn"'"}}'
6870
payload=$(echo -n "$query" |encode_base64)
6971
signature=$(printf "%s" "$protected.$payload" |\
7072
openssl dgst -sha256 -binary -sign "$key" |encode_base64)

bin/v-generate-ssl-cert

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ shell_list_ssl() {
5454
echo -e "\nDirectory: $workdir"
5555
}
5656

57+
# Additional argument formatting
58+
format_domain_idn
59+
if [[ "$email" = *[![:ascii:]]* ]]; then
60+
email=$(idn -t --quiet -a $email)
61+
fi
5762

5863

5964
#----------------------------------------------------------#
@@ -69,15 +74,6 @@ is_format_valid 'domain_alias' 'format'
6974
# Action #
7075
#----------------------------------------------------------#
7176

72-
if [[ "$domain" = *[![:ascii:]]* ]]; then
73-
domain_idn=$(idn -t --quiet -a $domain)
74-
else
75-
domain_idn=$domain
76-
fi
77-
if [[ "$email" = *[![:ascii:]]* ]]; then
78-
email=$(idn -t --quiet -a $email)
79-
fi
80-
8177
# Create temporary work directory
8278
workdir=$(mktemp -d)
8379
cd $workdir
@@ -98,10 +94,12 @@ if [ -z "$aliases" ]; then
9894
-out $domain.csr #>/dev/null 2>&1
9995
else
10096
for alias in $(echo $domain,$aliases |tr ',' '\n' |sort -u); do
97+
if [[ "$alias" = *[![:ascii:]]* ]]; then
98+
alias=$(idn -t --quiet -a $alias)
99+
fi
101100
dns_aliases="${dns_aliases}DNS:$alias,"
102101
done
103102
dns_aliases=$(echo $dns_aliases |sed "s/,$//")
104-
105103
if [ -e "/etc/ssl/openssl.cnf" ]; then
106104
ssl_conf='/etc/ssl/openssl.cnf'
107105
else
@@ -129,15 +127,15 @@ openssl x509 -req -sha256 \
129127

130128
# Listing certificates
131129
if [ -e "$domain.crt" ]; then
132-
crt=$(cat $domain.crt | sed ':a;N;$!ba;s/\n/\\n/g' )
130+
crt=$(cat $domain.crt |sed ':a;N;$!ba;s/\n/\\n/g' )
133131
fi
134132

135133
if [ -e "$domain.key" ]; then
136-
key=$(cat $domain.key | sed ':a;N;$!ba;s/\n/\\n/g' )
134+
key=$(cat $domain.key |sed ':a;N;$!ba;s/\n/\\n/g' )
137135
fi
138136

139137
if [ -e "$domain.csr" ]; then
140-
csr=$(cat $domain.csr | sed ':a;N;$!ba;s/\n/\\n/g' )
138+
csr=$(cat $domain.csr |sed ':a;N;$!ba;s/\n/\\n/g' )
141139
fi
142140

143141
case $format in

bin/v-sign-letsencrypt-csr

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111

1212
# Argument definition
1313
user=$1
14-
domain=$(idn -t --quiet -u "$2" )
15-
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
14+
domain=$2
1615
csr="$3/$domain.csr"
1716
format=$4
1817

@@ -53,7 +52,6 @@ fi
5352

5453
source $USER_DATA/ssl/le.conf
5554
api='https://acme-v01.api.letsencrypt.org'
56-
r_domain=$(echo "$check_domain" |cut -f 2 -d \')
5755
key="$USER_DATA/ssl/user.key"
5856
exponent="$EXPONENT"
5957
modulus="$MODULUS"

0 commit comments

Comments
 (0)