Skip to content

Instantly share code, notes, and snippets.

@danie1k
Last active September 11, 2023 22:10
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danie1k/c3d866eb6eed93bbc16b0628639efefe to your computer and use it in GitHub Desktop.
Save danie1k/c3d866eb6eed93bbc16b0628639efefe to your computer and use it in GitHub Desktop.
Export SSL Certificate from OPNsense to file
#!/usr/bin/env sh
# Based on https://forum.netgate.com/post/785981
HOSTNAME=""
CERT_ID=""
USERNAME=""
PASSWORD=""
echo "Downloading certificate id=${CERT_ID} from ${HOSTNAME} into cert.pem file..."
# Open login screen
curl --cookie /tmp/opnsense_cookies.txt --cookie-jar /tmp/opnsense_cookies.txt \
https://$HOSTNAME/system_certmanager.php \
| grep hidden | sed -E 's/.*name="([^"\]+)" value="([^"]+)".*/\1=\2/' > /tmp/opnsense_csrf.txt
POST_DATA="usernamefld=${USERNAME}&passwordfld=${PASSWORD}&login=1&$(cat /tmp/opnsense_csrf.txt)"
# Perform login
curl --cookie /tmp/opnsense_cookies.txt --cookie-jar /tmp/opnsense_cookies.txt \
https://$HOSTNAME/system_certmanager.php \
-X POST --data "${POST_DATA}" > /dev/null
# Export user key
curl --cookie /tmp/opnsense_cookies.txt --cookie-jar /tmp/opnsense_cookies.txt \
"https://$HOSTNAME/system_certmanager.php?act=key&id=$CERT_ID" > cert.pem
# Export user cert
curl --cookie /tmp/opnsense_cookies.txt --cookie-jar /tmp/opnsense_cookies.txt \
"https://$HOSTNAME/system_certmanager.php?act=exp&id=$CERT_ID" >> cert.pem
rm -f /tmp/opnsense_csrf.txt /tmp/opnsense_cookies.txt
echo "Done."
#!/usr/bin/env sh
# Based on https://forum.netgate.com/post/785981
HOSTNAME=""
CERT_ID=""
USERNAME=""
PASSWORD=""
echo "Downloading certificate id=${CERT_ID} from ${HOSTNAME} into cert.pem file..."
# Open login screen
wget -qO- \
--keep-session-cookies --save-cookies /tmp/opnsense_cookies.txt \
--no-check-certificate https://$HOSTNAME/system_certmanager.php \
| grep hidden | sed -E 's/.*name="([^"\]+)" value="([^"]+)".*/\1=\2/' > /tmp/opnsense_csrf.txt
POST_DATA="usernamefld=${USERNAME}&passwordfld=${PASSWORD}&login=1&$(cat /tmp/opnsense_csrf.txt)"
# Perform login
wget -qO- \
--keep-session-cookies --load-cookies /tmp/opnsense_cookies.txt \
--save-cookies /tmp/opnsense_cookies.txt \
--no-check-certificate https://$HOSTNAME/system_certmanager.php \
--post-data "${POST_DATA}" > /dev/null
# Export user key
wget -qO- \
--keep-session-cookies --load-cookies /tmp/opnsense_cookies.txt \
--save-cookies /tmp/opnsense_cookies.txt \
--no-check-certificate "https://$HOSTNAME/system_certmanager.php?act=key&id=$CERT_ID" > cert.pem
# Export user cert
wget -qO- \
--keep-session-cookies --load-cookies /tmp/opnsense_cookies.txt \
--save-cookies /tmp/opnsense_cookies.txt \
--no-check-certificate "https://$HOSTNAME/system_certmanager.php?act=exp&id=$CERT_ID" >> cert.pem
rm -f /tmp/opnsense_csrf.txt /tmp/opnsense_cookies.txt
echo "Done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment