mirror of
				https://github.com/hiskang/acme.sh
				synced 2025-10-31 10:27:22 +00:00 
			
		
		
		
	
						commit
						4742e0951c
					
				
							
								
								
									
										272
									
								
								acme.sh
									
									
									
									
									
								
							
							
						
						
									
										272
									
								
								acme.sh
									
									
									
									
									
								
							| @ -336,15 +336,245 @@ _h2b() { | |||||||
|   done |   done | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #hex string | _is_solaris() { | ||||||
| _hex() { |   _contains "${__OS__:=$(uname -a)}" "solaris" || _contains "${__OS__:=$(uname -a)}" "SunOS" | ||||||
|   _str="$1" | } | ||||||
|   _str_len=${#_str} | 
 | ||||||
|   _h_i=1 | #stdin  output hexstr splited by one space | ||||||
|   while [ "$_h_i" -le "$_str_len" ]; do | #input:"abc" | ||||||
|     _str_c="$(printf "%s" "$_str" | cut -c "$_h_i")" | #output: " 61 62 63" | ||||||
|     printf "%02x" "'$_str_c" | _hex_dump() { | ||||||
|     _h_i="$(_math "$_h_i" + 1)" |   if _is_solaris; then | ||||||
|  |     od -A n -v -t x1 | tr -d "\r\n\t" | tr -s " " | tr -d "\n" | ||||||
|  |   else | ||||||
|  |     od -A n -v -t x1 | tr -d "\r\n\t" | tr -s " " | sed "s/ $//" | tr -d "\n" | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #url encode, no-preserved chars | ||||||
|  | #A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z | ||||||
|  | #41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a | ||||||
|  | 
 | ||||||
|  | #a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z | ||||||
|  | #61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a | ||||||
|  | 
 | ||||||
|  | #0  1  2  3  4  5  6  7  8  9  -  _  .  ~ | ||||||
|  | #30 31 32 33 34 35 36 37 38 39 2d 5f 2e 7e | ||||||
|  | 
 | ||||||
|  | #stdin stdout | ||||||
|  | _url_encode() { | ||||||
|  |   _hex_str=$(_hex_dump) | ||||||
|  |   _debug3 "_url_encode" | ||||||
|  |   _debug3 "_hex_str" "$_hex_str" | ||||||
|  |   for _hex_code in $_hex_str; do | ||||||
|  |     #upper case | ||||||
|  |     case "${_hex_code}" in | ||||||
|  |       "41") | ||||||
|  |         printf "%s" "A" | ||||||
|  |         ;; | ||||||
|  |       "42") | ||||||
|  |         printf "%s" "B" | ||||||
|  |         ;; | ||||||
|  |       "43") | ||||||
|  |         printf "%s" "C" | ||||||
|  |         ;; | ||||||
|  |       "44") | ||||||
|  |         printf "%s" "D" | ||||||
|  |         ;; | ||||||
|  |       "45") | ||||||
|  |         printf "%s" "E" | ||||||
|  |         ;; | ||||||
|  |       "46") | ||||||
|  |         printf "%s" "F" | ||||||
|  |         ;; | ||||||
|  |       "47") | ||||||
|  |         printf "%s" "G" | ||||||
|  |         ;; | ||||||
|  |       "48") | ||||||
|  |         printf "%s" "H" | ||||||
|  |         ;; | ||||||
|  |       "49") | ||||||
|  |         printf "%s" "I" | ||||||
|  |         ;; | ||||||
|  |       "4a") | ||||||
|  |         printf "%s" "J" | ||||||
|  |         ;; | ||||||
|  |       "4b") | ||||||
|  |         printf "%s" "K" | ||||||
|  |         ;; | ||||||
|  |       "4c") | ||||||
|  |         printf "%s" "L" | ||||||
|  |         ;; | ||||||
|  |       "4d") | ||||||
|  |         printf "%s" "M" | ||||||
|  |         ;; | ||||||
|  |       "4e") | ||||||
|  |         printf "%s" "N" | ||||||
|  |         ;; | ||||||
|  |       "4f") | ||||||
|  |         printf "%s" "O" | ||||||
|  |         ;; | ||||||
|  |       "50") | ||||||
|  |         printf "%s" "P" | ||||||
|  |         ;; | ||||||
|  |       "51") | ||||||
|  |         printf "%s" "Q" | ||||||
|  |         ;; | ||||||
|  |       "52") | ||||||
|  |         printf "%s" "R" | ||||||
|  |         ;; | ||||||
|  |       "53") | ||||||
|  |         printf "%s" "S" | ||||||
|  |         ;; | ||||||
|  |       "54") | ||||||
|  |         printf "%s" "T" | ||||||
|  |         ;; | ||||||
|  |       "55") | ||||||
|  |         printf "%s" "U" | ||||||
|  |         ;; | ||||||
|  |       "56") | ||||||
|  |         printf "%s" "V" | ||||||
|  |         ;; | ||||||
|  |       "57") | ||||||
|  |         printf "%s" "W" | ||||||
|  |         ;; | ||||||
|  |       "58") | ||||||
|  |         printf "%s" "X" | ||||||
|  |         ;; | ||||||
|  |       "59") | ||||||
|  |         printf "%s" "Y" | ||||||
|  |         ;; | ||||||
|  |       "5a") | ||||||
|  |         printf "%s" "Z" | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |       #lower case | ||||||
|  |       "61") | ||||||
|  |         printf "%s" "a" | ||||||
|  |         ;; | ||||||
|  |       "62") | ||||||
|  |         printf "%s" "b" | ||||||
|  |         ;; | ||||||
|  |       "63") | ||||||
|  |         printf "%s" "c" | ||||||
|  |         ;; | ||||||
|  |       "64") | ||||||
|  |         printf "%s" "d" | ||||||
|  |         ;; | ||||||
|  |       "65") | ||||||
|  |         printf "%s" "e" | ||||||
|  |         ;; | ||||||
|  |       "66") | ||||||
|  |         printf "%s" "f" | ||||||
|  |         ;; | ||||||
|  |       "67") | ||||||
|  |         printf "%s" "g" | ||||||
|  |         ;; | ||||||
|  |       "68") | ||||||
|  |         printf "%s" "h" | ||||||
|  |         ;; | ||||||
|  |       "69") | ||||||
|  |         printf "%s" "i" | ||||||
|  |         ;; | ||||||
|  |       "6a") | ||||||
|  |         printf "%s" "j" | ||||||
|  |         ;; | ||||||
|  |       "6b") | ||||||
|  |         printf "%s" "k" | ||||||
|  |         ;; | ||||||
|  |       "6c") | ||||||
|  |         printf "%s" "l" | ||||||
|  |         ;; | ||||||
|  |       "6d") | ||||||
|  |         printf "%s" "m" | ||||||
|  |         ;; | ||||||
|  |       "6e") | ||||||
|  |         printf "%s" "n" | ||||||
|  |         ;; | ||||||
|  |       "6f") | ||||||
|  |         printf "%s" "o" | ||||||
|  |         ;; | ||||||
|  |       "70") | ||||||
|  |         printf "%s" "p" | ||||||
|  |         ;; | ||||||
|  |       "71") | ||||||
|  |         printf "%s" "q" | ||||||
|  |         ;; | ||||||
|  |       "72") | ||||||
|  |         printf "%s" "r" | ||||||
|  |         ;; | ||||||
|  |       "73") | ||||||
|  |         printf "%s" "s" | ||||||
|  |         ;; | ||||||
|  |       "74") | ||||||
|  |         printf "%s" "t" | ||||||
|  |         ;; | ||||||
|  |       "75") | ||||||
|  |         printf "%s" "u" | ||||||
|  |         ;; | ||||||
|  |       "76") | ||||||
|  |         printf "%s" "v" | ||||||
|  |         ;; | ||||||
|  |       "77") | ||||||
|  |         printf "%s" "w" | ||||||
|  |         ;; | ||||||
|  |       "78") | ||||||
|  |         printf "%s" "x" | ||||||
|  |         ;; | ||||||
|  |       "79") | ||||||
|  |         printf "%s" "y" | ||||||
|  |         ;; | ||||||
|  |       "7a") | ||||||
|  |         printf "%s" "z" | ||||||
|  |         ;; | ||||||
|  |       #numbers | ||||||
|  |       "30") | ||||||
|  |         printf "%s" "0" | ||||||
|  |         ;; | ||||||
|  |       "31") | ||||||
|  |         printf "%s" "1" | ||||||
|  |         ;; | ||||||
|  |       "32") | ||||||
|  |         printf "%s" "2" | ||||||
|  |         ;; | ||||||
|  |       "33") | ||||||
|  |         printf "%s" "3" | ||||||
|  |         ;; | ||||||
|  |       "34") | ||||||
|  |         printf "%s" "4" | ||||||
|  |         ;; | ||||||
|  |       "35") | ||||||
|  |         printf "%s" "5" | ||||||
|  |         ;; | ||||||
|  |       "36") | ||||||
|  |         printf "%s" "6" | ||||||
|  |         ;; | ||||||
|  |       "37") | ||||||
|  |         printf "%s" "7" | ||||||
|  |         ;; | ||||||
|  |       "38") | ||||||
|  |         printf "%s" "8" | ||||||
|  |         ;; | ||||||
|  |       "39") | ||||||
|  |         printf "%s" "9" | ||||||
|  |         ;; | ||||||
|  |       "2d") | ||||||
|  |         printf "%s" "-" | ||||||
|  |         ;; | ||||||
|  |       "5f") | ||||||
|  |         printf "%s" "_" | ||||||
|  |         ;; | ||||||
|  |       "2e") | ||||||
|  |         printf "%s" "." | ||||||
|  |         ;; | ||||||
|  |       "7e") | ||||||
|  |         printf "%s" "~" | ||||||
|  |         ;; | ||||||
|  |       #other hex   | ||||||
|  |       *) | ||||||
|  |         printf '%%%s' "$_hex_code" | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|   done |   done | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -868,7 +1098,7 @@ createCSR() { | |||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| _urlencode() { | _url_replace() { | ||||||
|   tr '/+' '_-' | tr -d '= ' |   tr '/+' '_-' | tr -d '= ' | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -935,7 +1165,7 @@ _calcjwk() { | |||||||
| 
 | 
 | ||||||
|     modulus=$($OPENSSL_BIN rsa -in "$keyfile" -modulus -noout | cut -d '=' -f 2) |     modulus=$($OPENSSL_BIN rsa -in "$keyfile" -modulus -noout | cut -d '=' -f 2) | ||||||
|     _debug3 modulus "$modulus" |     _debug3 modulus "$modulus" | ||||||
|     n="$(printf "%s" "$modulus" | _h2b | _base64 | _urlencode)" |     n="$(printf "%s" "$modulus" | _h2b | _base64 | _url_replace)" | ||||||
|     _debug3 n "$n" |     _debug3 n "$n" | ||||||
| 
 | 
 | ||||||
|     jwk='{"e": "'$e'", "kty": "RSA", "n": "'$n'"}' |     jwk='{"e": "'$e'", "kty": "RSA", "n": "'$n'"}' | ||||||
| @ -990,14 +1220,14 @@ _calcjwk() { | |||||||
|     x="$(printf "%s" "$pubtext" | cut -d : -f 2-"$xend")" |     x="$(printf "%s" "$pubtext" | cut -d : -f 2-"$xend")" | ||||||
|     _debug3 x "$x" |     _debug3 x "$x" | ||||||
| 
 | 
 | ||||||
|     x64="$(printf "%s" "$x" | tr -d : | _h2b | _base64 | _urlencode)" |     x64="$(printf "%s" "$x" | tr -d : | _h2b | _base64 | _url_replace)" | ||||||
|     _debug3 x64 "$x64" |     _debug3 x64 "$x64" | ||||||
| 
 | 
 | ||||||
|     xend=$(_math "$xend" + 1) |     xend=$(_math "$xend" + 1) | ||||||
|     y="$(printf "%s" "$pubtext" | cut -d : -f "$xend"-10000)" |     y="$(printf "%s" "$pubtext" | cut -d : -f "$xend"-10000)" | ||||||
|     _debug3 y "$y" |     _debug3 y "$y" | ||||||
| 
 | 
 | ||||||
|     y64="$(printf "%s" "$y" | tr -d : | _h2b | _base64 | _urlencode)" |     y64="$(printf "%s" "$y" | tr -d : | _h2b | _base64 | _url_replace)" | ||||||
|     _debug3 y64 "$y64" |     _debug3 y64 "$y64" | ||||||
| 
 | 
 | ||||||
|     jwk='{"crv": "'$crv'", "kty": "EC", "x": "'$x64'", "y": "'$y64'"}' |     jwk='{"crv": "'$crv'", "kty": "EC", "x": "'$x64'", "y": "'$y64'"}' | ||||||
| @ -1241,7 +1471,7 @@ _send_signed_request() { | |||||||
|     return 1 |     return 1 | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|   payload64=$(printf "%s" "$payload" | _base64 | _urlencode) |   payload64=$(printf "%s" "$payload" | _base64 | _url_replace) | ||||||
|   _debug3 payload64 "$payload64" |   _debug3 payload64 "$payload64" | ||||||
| 
 | 
 | ||||||
|   if [ -z "$_CACHED_NONCE" ]; then |   if [ -z "$_CACHED_NONCE" ]; then | ||||||
| @ -1267,7 +1497,7 @@ _send_signed_request() { | |||||||
|   protected="$JWK_HEADERPLACE_PART1$nonce$JWK_HEADERPLACE_PART2" |   protected="$JWK_HEADERPLACE_PART1$nonce$JWK_HEADERPLACE_PART2" | ||||||
|   _debug3 protected "$protected" |   _debug3 protected "$protected" | ||||||
| 
 | 
 | ||||||
|   protected64="$(printf "%s" "$protected" | _base64 | _urlencode)" |   protected64="$(printf "%s" "$protected" | _base64 | _url_replace)" | ||||||
|   _debug3 protected64 "$protected64" |   _debug3 protected64 "$protected64" | ||||||
| 
 | 
 | ||||||
|   if ! _sig_t="$(printf "%s" "$protected64.$payload64" | _sign "$keyfile" "sha256")"; then |   if ! _sig_t="$(printf "%s" "$protected64.$payload64" | _sign "$keyfile" "sha256")"; then | ||||||
| @ -1276,7 +1506,7 @@ _send_signed_request() { | |||||||
|   fi |   fi | ||||||
|   _debug3 _sig_t "$_sig_t" |   _debug3 _sig_t "$_sig_t" | ||||||
| 
 | 
 | ||||||
|   sig="$(printf "%s" "$_sig_t" | _urlencode)" |   sig="$(printf "%s" "$_sig_t" | _url_replace)" | ||||||
|   _debug3 sig "$sig" |   _debug3 sig "$sig" | ||||||
| 
 | 
 | ||||||
|   body="{\"header\": $JWK_HEADER, \"protected\": \"$protected64\", \"payload\": \"$payload64\", \"signature\": \"$sig\"}" |   body="{\"header\": $JWK_HEADER, \"protected\": \"$protected64\", \"payload\": \"$payload64\", \"signature\": \"$sig\"}" | ||||||
| @ -2005,7 +2235,7 @@ _clearupdns() { | |||||||
|     keyauthorization=$(echo "$ventry" | cut -d "$sep" -f 2) |     keyauthorization=$(echo "$ventry" | cut -d "$sep" -f 2) | ||||||
|     vtype=$(echo "$ventry" | cut -d "$sep" -f 4) |     vtype=$(echo "$ventry" | cut -d "$sep" -f 4) | ||||||
|     _currentRoot=$(echo "$ventry" | cut -d "$sep" -f 5) |     _currentRoot=$(echo "$ventry" | cut -d "$sep" -f 5) | ||||||
|     txt="$(printf "%s" "$keyauthorization" | _digest "sha256" | _urlencode)" |     txt="$(printf "%s" "$keyauthorization" | _digest "sha256" | _url_replace)" | ||||||
|     _debug txt "$txt" |     _debug txt "$txt" | ||||||
|     if [ "$keyauthorization" = "$STATE_VERIFIED" ]; then |     if [ "$keyauthorization" = "$STATE_VERIFIED" ]; then | ||||||
|       _info "$d is already verified, skip $vtype." |       _info "$d is already verified, skip $vtype." | ||||||
| @ -2549,7 +2779,7 @@ issue() { | |||||||
| 
 | 
 | ||||||
|       if [ -z "$thumbprint" ]; then |       if [ -z "$thumbprint" ]; then | ||||||
|         accountkey_json=$(printf "%s" "$jwk" | tr -d ' ') |         accountkey_json=$(printf "%s" "$jwk" | tr -d ' ') | ||||||
|         thumbprint=$(printf "%s" "$accountkey_json" | _digest "sha256" | _urlencode) |         thumbprint=$(printf "%s" "$accountkey_json" | _digest "sha256" | _url_replace) | ||||||
|       fi |       fi | ||||||
| 
 | 
 | ||||||
|       entry="$(printf "%s\n" "$response" | _egrep_o '[^\{]*"type":"'$vtype'"[^\}]*')" |       entry="$(printf "%s\n" "$response" | _egrep_o '[^\{]*"type":"'$vtype'"[^\}]*')" | ||||||
| @ -2600,7 +2830,7 @@ issue() { | |||||||
|         dnsadded='0' |         dnsadded='0' | ||||||
|         txtdomain="_acme-challenge.$d" |         txtdomain="_acme-challenge.$d" | ||||||
|         _debug txtdomain "$txtdomain" |         _debug txtdomain "$txtdomain" | ||||||
|         txt="$(printf "%s" "$keyauthorization" | _digest "sha256" | _urlencode)" |         txt="$(printf "%s" "$keyauthorization" | _digest "sha256" | _url_replace)" | ||||||
|         _debug txt "$txt" |         _debug txt "$txt" | ||||||
| 
 | 
 | ||||||
|         d_api="$(_findHook "$d" dnsapi "$_currentRoot")" |         d_api="$(_findHook "$d" dnsapi "$_currentRoot")" | ||||||
| @ -2875,7 +3105,7 @@ issue() { | |||||||
| 
 | 
 | ||||||
|   _clearup |   _clearup | ||||||
|   _info "Verify finished, start to sign." |   _info "Verify finished, start to sign." | ||||||
|   der="$(_getfile "${CSR_PATH}" "${BEGIN_CSR}" "${END_CSR}" | tr -d "\r\n" | _urlencode)" |   der="$(_getfile "${CSR_PATH}" "${BEGIN_CSR}" "${END_CSR}" | tr -d "\r\n" | _url_replace)" | ||||||
| 
 | 
 | ||||||
|   if ! _send_signed_request "$API/acme/new-cert" "{\"resource\": \"new-cert\", \"csr\": \"$der\"}" "needbase64"; then |   if ! _send_signed_request "$API/acme/new-cert" "{\"resource\": \"new-cert\", \"csr\": \"$der\"}" "needbase64"; then | ||||||
|     _err "Sign failed." |     _err "Sign failed." | ||||||
| @ -3453,7 +3683,7 @@ revoke() { | |||||||
|     return 1 |     return 1 | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|   cert="$(_getfile "${CERT_PATH}" "${BEGIN_CERT}" "${END_CERT}" | tr -d "\r\n" | _urlencode)" |   cert="$(_getfile "${CERT_PATH}" "${BEGIN_CERT}" "${END_CERT}" | tr -d "\r\n" | _url_replace)" | ||||||
| 
 | 
 | ||||||
|   if [ -z "$cert" ]; then |   if [ -z "$cert" ]; then | ||||||
|     _err "Cert for $Le_Domain is empty found, skip." |     _err "Cert for $Le_Domain is empty found, skip." | ||||||
|  | |||||||
							
								
								
									
										81
									
								
								deploy/kong.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								deploy/kong.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,81 @@ | |||||||
|  | #!/usr/bin/env sh | ||||||
|  | 
 | ||||||
|  | # This deploy hook will deploy ssl cert on kong proxy engine based on api request_host parameter. | ||||||
|  | # Note that ssl plugin should be available on Kong instance | ||||||
|  | # The hook will match cdomain to request_host, in case of multiple domain it will always take the first | ||||||
|  | # one (acme.sh behaviour). | ||||||
|  | # If ssl config already exist it will update only cert and key not touching other parameter | ||||||
|  | # If ssl config doesn't exist it will only upload cert and key and not set other parameter | ||||||
|  | # Not that we deploy full chain | ||||||
|  | # See https://getkong.org/plugins/dynamic-ssl/ for other options | ||||||
|  | # Written by Geoffroi Genot <ggenot@voxbone.com> | ||||||
|  | 
 | ||||||
|  | ########  Public functions ##################### | ||||||
|  | 
 | ||||||
|  | #domain keyfile certfile cafile fullchain | ||||||
|  | kong_deploy() { | ||||||
|  |   _cdomain="$1" | ||||||
|  |   _ckey="$2" | ||||||
|  |   _ccert="$3" | ||||||
|  |   _cca="$4" | ||||||
|  |   _cfullchain="$5" | ||||||
|  |   _info "Deploying certificate on Kong instance" | ||||||
|  |   if [ -z "$KONG_URL" ]; then | ||||||
|  |     _debug "KONG_URL Not set, using default http://localhost:8001" | ||||||
|  |     KONG_URL="http://localhost:8001" | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   _debug _cdomain "$_cdomain" | ||||||
|  |   _debug _ckey "$_ckey" | ||||||
|  |   _debug _ccert "$_ccert" | ||||||
|  |   _debug _cca "$_cca" | ||||||
|  |   _debug _cfullchain "$_cfullchain" | ||||||
|  | 
 | ||||||
|  |   #Get uuid linked to the domain | ||||||
|  |   uuid=$(_get "$KONG_URL/apis?request_host=$_cdomain" | _normalizeJson | _egrep_o '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}') | ||||||
|  |   if [ -z "$uuid" ]; then | ||||||
|  |     _err "Unable to get Kong uuid for domain $_cdomain" | ||||||
|  |     _err "Make sure that KONG_URL is correctly configured" | ||||||
|  |     _err "Make sure that a Kong api request_host match the domain" | ||||||
|  |     _err "Kong url: $KONG_URL" | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  |   #Save kong url if it's succesful (First run case) | ||||||
|  |   _saveaccountconf KONG_URL "$KONG_URL" | ||||||
|  |   #Generate DEIM | ||||||
|  |   delim="-----MultipartDelimeter$(date "+%s%N")" | ||||||
|  |   nl="\015\012" | ||||||
|  |   #Set Header | ||||||
|  |   _H1="Content-Type: multipart/form-data; boundary=$delim" | ||||||
|  |   #Generate data for request (Multipart/form-data with mixed content) | ||||||
|  |   #set name to ssl | ||||||
|  |   content="--$delim${nl}Content-Disposition: form-data; name=\"name\"${nl}${nl}ssl" | ||||||
|  |   #add key | ||||||
|  |   content="$content${nl}--$delim${nl}Content-Disposition: form-data; name=\"config.key\"; filename=\"$(basename "$_ckey")\"${nl}Content-Type: application/octet-stream${nl}${nl}$(cat "$_ckey")" | ||||||
|  |   #Add cert | ||||||
|  |   content="$content${nl}--$delim${nl}Content-Disposition: form-data; name=\"config.cert\"; filename=\"$(basename "$_cfullchain")\"${nl}Content-Type: application/octet-stream${nl}${nl}$(cat "$_cfullchain")" | ||||||
|  |   #Close multipart | ||||||
|  |   content="$content${nl}--$delim--${nl}" | ||||||
|  |   #Convert CRLF | ||||||
|  |   content=$(printf %b "$content") | ||||||
|  |   #DEBUG | ||||||
|  |   _debug header "$_H1" | ||||||
|  |   _debug content "$content" | ||||||
|  |   #Check if ssl plugins is aready enabled (if not => POST else => PATCH) | ||||||
|  |   ssl_uuid=$(_get "$KONG_URL/apis/$uuid/plugins" | _egrep_o '"id":"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"[a-zA-Z0-9\-\,\"_\:]*"name":"ssl"' | _egrep_o '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}') | ||||||
|  |   _debug ssl_uuid "$ssl_uuid" | ||||||
|  |   if [ -z "$ssl_uuid" ]; then | ||||||
|  |     #Post certificate to Kong | ||||||
|  |     response=$(_post "$content" "$KONG_URL/apis/$uuid/plugins" "" "POST") | ||||||
|  |   else | ||||||
|  |     #patch | ||||||
|  |     response=$(_post "$content" "$KONG_URL/apis/$uuid/plugins/$ssl_uuid" "" "PATCH") | ||||||
|  |   fi | ||||||
|  |   if ! [ "$(echo "$response" | _egrep_o "ssl")" = "ssl" ]; then | ||||||
|  |     _err "An error occured with cert upload. Check response:" | ||||||
|  |     _err "$response" | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  |   _debug response "$response" | ||||||
|  |   _info "Certificate successfully deployed" | ||||||
|  | } | ||||||
| @ -67,7 +67,7 @@ _get_root() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| _ali_rest() { | _ali_rest() { | ||||||
|   signature=$(printf "%s" "GET&%2F&$(_ali_urlencode "$query")" | _hmac "sha1" "$(_hex "$Ali_Secret&")" | _base64) |   signature=$(printf "%s" "GET&%2F&$(_ali_urlencode "$query")" | _hmac "sha1" "$(printf "%s" "$Ali_Secret&" | _hex_dump | sed "s/ //g")" | _base64) | ||||||
|   signature=$(_ali_urlencode "$signature") |   signature=$(_ali_urlencode "$signature") | ||||||
|   url="$Ali_API?$query&Signature=$signature" |   url="$Ali_API?$query&Signature=$signature" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -183,7 +183,7 @@ aws_rest() { | |||||||
| 
 | 
 | ||||||
|   _debug2 kSecret "$kSecret" |   _debug2 kSecret "$kSecret" | ||||||
| 
 | 
 | ||||||
|   kSecretH="$(_hex "$kSecret")" |   kSecretH="$(printf "%s" "$kSecret" | _hex_dump | sed "s/ //g")" | ||||||
|   _debug2 kSecretH "$kSecretH" |   _debug2 kSecretH "$kSecretH" | ||||||
| 
 | 
 | ||||||
|   kDateH="$(printf "$RequestDateOnly%s" | _hmac "$Hash" "$kSecretH" hex)" |   kDateH="$(printf "$RequestDateOnly%s" | _hmac "$Hash" "$kSecretH" hex)" | ||||||
|  | |||||||
| @ -124,7 +124,7 @@ _me_rest() { | |||||||
|   _debug "$ep" |   _debug "$ep" | ||||||
| 
 | 
 | ||||||
|   cdate=$(date -u +"%a, %d %b %Y %T %Z") |   cdate=$(date -u +"%a, %d %b %Y %T %Z") | ||||||
|   hmac=$(printf "%s" "$cdate" | _hmac sha1 "$(_hex "$ME_Secret")" hex) |   hmac=$(printf "%s" "$cdate" | _hmac sha1 "$(printf "%s" "$ME_Secret" | _hex_dump | sed "s/ //g")" hex) | ||||||
| 
 | 
 | ||||||
|   export _H1="x-dnsme-apiKey: $ME_Key" |   export _H1="x-dnsme-apiKey: $ME_Key" | ||||||
|   export _H2="x-dnsme-requestDate: $cdate" |   export _H2="x-dnsme-requestDate: $cdate" | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user