#!/bin/bash # generate_certificate.sh — Create a self-signed X.509 certificate for # open62541 OPC UA applications. Outputs DER-encoded certificate and # private-key files suitable for the demo programs in this project. # # Arguments: # $1 certs_dir — output directory for generated files (created if missing) # $2 name — identity name (e.g. "ServerLDS", "ClientFindServers") # $3 uri — (optional) application URI; defaults to urn:bobink. # # Produces: # /_cert.der — DER-encoded X.509 certificate # /_cert.pem — PEM-encoded X.509 certificate # /_key.der — DER-encoded RSA private key set -euo pipefail # Fail fast; no unset vars; catch pipe failures. if [ $# -lt 2 ] || [ $# -gt 3 ]; then echo "Usage: generate_certificate.sh [uri]" >&2 exit 1 fi certs_dir="$1" name="$2" cn="${name}@localhost" uri="${3:-urn:bobink.${name}}" mkdir -p "$certs_dir" cnf="$certs_dir/${name}.cnf" cat >"$cnf" </dev/null openssl x509 -in "$certs_dir/${name}_cert.pem" -outform der \ -out "$certs_dir/${name}_cert.der" openssl rsa -in "$certs_dir/${name}_key.pem" -outform der \ -out "$certs_dir/${name}_key.der" 2>/dev/null rm -f "$certs_dir/${name}_key.pem" "$cnf" echo "Generated certificate '$name' (CN=$cn, URI=$uri):" echo " $certs_dir/${name}_cert.der" echo " $certs_dir/${name}_cert.pem" echo " $certs_dir/${name}_key.der"