| @ -0,0 +1,7 @@ | |||||
| #!/usr/bin/env bash | |||||
| # Simple script to update the challtestserv mock DNS server when testing DNS responses | |||||
| fulldomain="${1}" | |||||
| token="${2}" | |||||
| curl -X POST -d "{\"host\":\"_acme-challenge.${fulldomain}.\", \"value\": \"${token}\"}" http://10.30.50.3:8055/set-txt | |||||
| @ -0,0 +1,6 @@ | |||||
| #!/usr/bin/env bash | |||||
| # Simple script to update the challtestserv mock DNS server when testing DNS responses | |||||
| fulldomain="${1}" | |||||
| curl -X POST -d "{\"host\":\"_acme-challenge.${fulldomain}.\"}" http://10.30.50.3:8055/clear-txt | |||||
| @ -0,0 +1,27 @@ | |||||
| FROM roboxes/rhel6 | |||||
| # FROM centos:centos6 | |||||
| # bionic = latest 18 version | |||||
| # Update and install required software | |||||
| RUN yum -y update | |||||
| RUN yum -y install epel-release | |||||
| RUN yum -y install git curl dnsutils wget # nginx-light | |||||
| WORKDIR /root | |||||
| #RUN mkdir /etc/nginx/pki | |||||
| #RUN mkdir /etc/nginx/pki/private | |||||
| #COPY ./test/test-config/nginx-ubuntu-sites-enabled-default /etc/nginx/sites-enabled/default | |||||
| # BATS (Bash Automated Testings) | |||||
| # RUN git clone https://github.com/bats-core/bats-core.git | |||||
| # RUN bats-core/install.sh /usr/local | |||||
| EXPOSE 80 443 | |||||
| # Run eternal loop - for testing | |||||
| CMD ["/bin/bash", "-c", "while :; do sleep 10; done"] | |||||
| # with Pebble | |||||
| # docker-compose -f "docker-compose.yml" up -d --build | |||||
| # docker exec -it getssl /bin/bash | |||||
| # /getssl/test/run-test.sh | |||||
| @ -1,9 +1,47 @@ | |||||
| #! /bin/sh | |||||
| #! /bin/bash | |||||
| set -e | |||||
| # Test setup | |||||
| rm -r /root/.getssl | |||||
| wget --no-clobber https://raw.githubusercontent.com/letsencrypt/pebble/master/test/certs/pebble.minica.pem | wget --no-clobber https://raw.githubusercontent.com/letsencrypt/pebble/master/test/certs/pebble.minica.pem | ||||
| export CURL_CA_BUNDLE=/root/pebble.minica.pem | |||||
| # cat /etc/pki/tls/certs/ca-bundle.crt /root/pebble.minica.pem > /root/pebble-ca-bundle.crt | |||||
| cat /etc/ssl/certs/ca-certificates.crt /root/pebble.minica.pem > /root/pebble-ca-bundle.crt | |||||
| export CURL_CA_BUNDLE=/root/pebble-ca-bundle.crt | |||||
| curl -X POST -d '{"host":"getssl", "addresses":["10.30.50.4"]}' http://10.30.50.3:8055/add-a | |||||
| # Test #1 - http-01 verification | |||||
| echo Test \#1 - http-01 verification | |||||
| service nginx start | |||||
| cp /getssl/test/test-config/nginx-ubuntu-no-ssl /etc/nginx/sites-enabled/default | |||||
| service nginx restart | |||||
| /getssl/getssl -c getssl | /getssl/getssl -c getssl | ||||
| cp getssl.cfg /root/.getssl/getssl | |||||
| cp /getssl/test/test-config/getssl-http01.cfg /root/.getssl/getssl/getssl.cfg | |||||
| /getssl/getssl -f getssl | |||||
| # Test #2 - http-01 forced renewal | |||||
| echo Test \#2 - http-01 forced renewal | |||||
| sleep 5 # There's a race condition if renew too soon (authlink returns "valid" instead of "pending") | |||||
| /getssl/getssl getssl -f | |||||
| # Test cleanup | |||||
| rm -r /root/.getssl | |||||
| # Test #3 - dns-01 verification | |||||
| echo Test \#3 - dns-01 verification | |||||
| cp /getssl/test/test-config/nginx-ubuntu-no-ssl /etc/nginx/sites-enabled/default | |||||
| service nginx restart | |||||
| /getssl/getssl -c getssl | |||||
| cp /getssl/test/test-config/getssl-dns01.cfg /root/.getssl/getssl/getssl.cfg | |||||
| /getssl/getssl getssl | /getssl/getssl getssl | ||||
| # Test #4 - dns-01 forced renewal | |||||
| echo Test \#4 - dns-01 forced renewal | |||||
| sleep 5 # There's a race condition if renew too soon (authlink returns "valid" instead of "pending") | |||||
| /getssl/getssl getssl -f | |||||
| @ -0,0 +1,54 @@ | |||||
| # Uncomment and modify any variables you need | |||||
| # see https://github.com/srvrco/getssl/wiki/Config-variables for details | |||||
| # see https://github.com/srvrco/getssl/wiki/Example-config-files for example configs | |||||
| # | |||||
| # The staging server is best for testing | |||||
| #CA="https://acme-staging.api.letsencrypt.org" | |||||
| # This server issues full certificates, however has rate limits | |||||
| #CA="https://acme-v01.api.letsencrypt.org" | |||||
| CA="https://pebble:14000/dir" | |||||
| VALIDATE_VIA_DNS=true | |||||
| DNS_ADD_COMMAND="/getssl/dns_scripts/dns_add_challtestsrv" | |||||
| DNS_DEL_COMMAND="/getssl/dns_scripts/dns_del_challtestsrv" | |||||
| # AUTH_DNS_SERVER=10.30.50.3 | |||||
| #PRIVATE_KEY_ALG="rsa" | |||||
| # Additional domains - this could be multiple domains / subdomains in a comma separated list | |||||
| # Note: this is Additional domains - so should not include the primary domain. | |||||
| SANS="" | |||||
| # Acme Challenge Location. The first line for the domain, the following ones for each additional domain. | |||||
| # If these start with ssh: then the next variable is assumed to be the hostname and the rest the location. | |||||
| # An ssh key will be needed to provide you with access to the remote server. | |||||
| # Optionally, you can specify a different userid for ssh/scp to use on the remote server before the @ sign. | |||||
| # If left blank, the username on the local server will be used to authenticate against the remote server. | |||||
| # If these start with ftp: then the next variables are ftpuserid:ftppassword:servername:ACL_location | |||||
| # These should be of the form "/path/to/your/website/folder/.well-known/acme-challenge" | |||||
| # where "/path/to/your/website/folder/" is the path, on your web server, to the web root for your domain. | |||||
| ACL=('/var/www/html/.well-known/acme-challenge') | |||||
| # 'ssh:server5:/var/www/getssltest.hopto.org/web/.well-known/acme-challenge' | |||||
| # 'ssh:sshuserid@server5:/var/www/getssltest.hopto.org/web/.well-known/acme-challenge' | |||||
| # 'ftp:ftpuserid:ftppassword:getssltest.hopto.org:/web/.well-known/acme-challenge') | |||||
| #Set USE_SINGLE_ACL="true" to use a single ACL for all checks | |||||
| USE_SINGLE_ACL="false" | |||||
| # Location for all your certs, these can either be on the server (full path name) | |||||
| # or using ssh /sftp as for the ACL | |||||
| DOMAIN_CERT_LOCATION="/etc/nginx/pki/server.crt" | |||||
| DOMAIN_KEY_LOCATION="/etc/nginx/pki/private/server.key" | |||||
| CA_CERT_LOCATION="/etc/nginx/pki/chain.crt" | |||||
| DOMAIN_CHAIN_LOCATION="" # this is the domain cert and CA cert | |||||
| DOMAIN_PEM_LOCATION="" # this is the domain_key, domain cert and CA cert | |||||
| # The command needed to reload apache / nginx or whatever you use | |||||
| RELOAD_CMD="cp /getssl/test/test-config/nginx-ubuntu-ssl /etc/nginx/sites-enabled/default && service nginx restart" | |||||
| # Define the server type. This can be https, ftp, ftpi, imap, imaps, pop3, pop3s, smtp, | |||||
| # smtps_deprecated, smtps, smtp_submission, xmpp, xmpps, ldaps or a port number which | |||||
| # will be checked for certificate expiry and also will be checked after | |||||
| # an update to confirm correct certificate is running (if CHECK_REMOTE) is set to true | |||||
| #SERVER_TYPE="https" | |||||
| #CHECK_REMOTE="true" | |||||
| @ -0,0 +1,92 @@ | |||||
| ## | |||||
| # You should look at the following URL's in order to grasp a solid understanding | |||||
| # of Nginx configuration files in order to fully unleash the power of Nginx. | |||||
| # http://wiki.nginx.org/Pitfalls | |||||
| # http://wiki.nginx.org/QuickStart | |||||
| # http://wiki.nginx.org/Configuration | |||||
| # | |||||
| # Generally, you will want to move this file somewhere, and start with a clean | |||||
| # file but keep this around for reference. Or just disable in sites-enabled. | |||||
| # | |||||
| # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. | |||||
| ## | |||||
| # Default server configuration | |||||
| # | |||||
| server { | |||||
| listen 80 default_server; | |||||
| listen 5002 default_server; | |||||
| listen [::]:5002 default_server; | |||||
| # SSL configuration | |||||
| # | |||||
| listen 443 ssl default_server; | |||||
| listen [::]:443 ssl default_server; | |||||
| listen 5001 ssl default_server; | |||||
| listen [::]:5001 ssl default_server; | |||||
| # | |||||
| # Note: You should disable gzip for SSL traffic. | |||||
| # See: https://bugs.debian.org/773332 | |||||
| # | |||||
| # Read up on ssl_ciphers to ensure a secure configuration. | |||||
| # See: https://bugs.debian.org/765782 | |||||
| # | |||||
| # Self signed certs generated by the ssl-cert package | |||||
| # Don't use them in a production server! | |||||
| # | |||||
| # include snippets/snakeoil.conf; | |||||
| root /var/www/html; | |||||
| # Add index.php to the list if you are using PHP | |||||
| index index.html index.htm index.nginx-debian.html; | |||||
| server_name _; | |||||
| ssl_certificate /etc/nginx/pki/server.crt; | |||||
| ssl_certificate_key /etc/nginx/pki/private/server.key; | |||||
| location / { | |||||
| # First attempt to serve request as file, then | |||||
| # as directory, then fall back to displaying a 404. | |||||
| try_files $uri $uri/ =404; | |||||
| } | |||||
| # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 | |||||
| # | |||||
| #location ~ \.php$ { | |||||
| # include snippets/fastcgi-php.conf; | |||||
| # | |||||
| # # With php7.0-cgi alone: | |||||
| # fastcgi_pass 127.0.0.1:9000; | |||||
| # # With php7.0-fpm: | |||||
| # fastcgi_pass unix:/run/php/php7.0-fpm.sock; | |||||
| #} | |||||
| # deny access to .htaccess files, if Apache's document root | |||||
| # concurs with nginx's one | |||||
| # | |||||
| #location ~ /\.ht { | |||||
| # deny all; | |||||
| #} | |||||
| } | |||||
| # Virtual Host configuration for example.com | |||||
| # | |||||
| # You can move that to a different file under sites-available/ and symlink that | |||||
| # to sites-enabled/ to enable it. | |||||
| # | |||||
| #server { | |||||
| # listen 80; | |||||
| # listen [::]:80; | |||||
| # | |||||
| # server_name example.com; | |||||
| # | |||||
| # root /var/www/example.com; | |||||
| # index index.html; | |||||
| # | |||||
| # location / { | |||||
| # try_files $uri $uri/ =404; | |||||
| # } | |||||
| #} | |||||