mirror of
https://github.com/OpenMANET/morse-feed.git
synced 2025-12-10 03:43:06 -06:00
packages : (APP-1674) add dppd-creds-dummy package.
This commit is contained in:
parent
c8fb813f41
commit
b3f381e42c
64
utils/dppd-creds-dummy/Makefile
Normal file
64
utils/dppd-creds-dummy/Makefile
Normal file
@ -0,0 +1,64 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
|
||||
PKG_NAME:=dppd-creds-dummy
|
||||
PKG_RELEASE=1
|
||||
|
||||
PKG_MAINTAINER:=The Customer
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
# "TheCustomer" value for CERT_HOSTNAME is just a dummy value, and needs to updated
|
||||
# according to your own hostname.
|
||||
|
||||
# CERT_HOSTNAME = TheCustomer
|
||||
# SUBJECT_ALT_NAME = "DNS:$(CERT_HOSTNAME).local"
|
||||
# SUBJECT_ALT_NAME += ",DNS:$(CERT_HOSTNAME)-2,DNS:$(CERT_HOSTNAME)-2.local"
|
||||
# SUBJECT_ALT_NAME += ",DNS:$(CERT_HOSTNAME)-3,DNS:$(CERT_HOSTNAME)-3.local"
|
||||
# SUBJECT_ALT_NAME += ",DNS:$(CERT_HOSTNAME)-4,DNS:$(CERT_HOSTNAME)-4.local"
|
||||
# EXT = "[v3_cert] \\n\
|
||||
# basicConstraints = CA:FALSE \\n\
|
||||
# subjectAltName = '$(SUBJECT_ALT_NAME)'\\n\
|
||||
# keyUsage = digitalSignature, keyEncipherment \\n\
|
||||
# extendedKeyUsage = 1.3.6.1.5.5.7.3.1"
|
||||
|
||||
define Package/dppd-creds-dummy
|
||||
SECTION:=Utilities
|
||||
CATEGORY:=Utilities
|
||||
PROVIDES:=dppd-creds
|
||||
TITLE:=DPP daemon credentials generator.
|
||||
endef
|
||||
|
||||
|
||||
# This credential package is for Demo purposes only and is not secure as the server private key is published.
|
||||
# In order to have a secure connection between DPP mobile app and the router, you'll need to follow the instructions in
|
||||
# files/README to generate your own certificate to sign the keys and update the compile step to sign your keys and
|
||||
# install step to copy your signed.
|
||||
|
||||
define Build/Compile
|
||||
openssl ecparam -genkey -name prime256v1 -noout -out $(PKG_BUILD_DIR)/key.pem
|
||||
openssl ecparam -genkey -name prime256v1 -noout -out $(PKG_BUILD_DIR)/ppkey.pem
|
||||
|
||||
# openssl req -nodes -newkey rsa:4096 -keyout $(PKG_BUILD_DIR)/server.key -out $(PKG_BUILD_DIR)/server.csr -subj "/C=AU/O=Morse Micro/OU=Engineering/CN=$(CERT_HOSTNAME)"
|
||||
# echo -e "$(EXT)" > $(PKG_BUILD_DIR)/auto_ext.conf
|
||||
|
||||
# openssl x509 -req -in $(PKG_BUILD_DIR)/server.csr -CA creds/ca.pem -CAkey creds/ca.key -CAcreateserial -days 1460 \
|
||||
# -out $(PKG_BUILD_DIR)/server.pem -extensions v3_cert -extfile $(PKG_BUILD_DIR)/auto_ext.conf
|
||||
endef
|
||||
|
||||
define Package/dppd-creds-dummy/description
|
||||
Generates the needed credentials for dpp daemon.
|
||||
endef
|
||||
|
||||
define Package/dppd-creds-dummy/install
|
||||
$(INSTALL_DIR) $(1)/etc/dppd/
|
||||
$(INSTALL_DATA) -m 0444 -D $(PKG_BUILD_DIR)/key.pem $(1)/etc/dppd/key.pem
|
||||
$(INSTALL_DATA) -m 0444 -D $(PKG_BUILD_DIR)/ppkey.pem $(1)/etc/dppd/ppkey.pem
|
||||
$(INSTALL_DATA) -m 0666 -D files/etc/dppd/auth_secrets.txt $(1)/etc/dppd/auth_secrets.txt
|
||||
|
||||
$(INSTALL_DATA) -m 0444 -D files/etc/dppd/server.key $(1)/etc/dppd/server.key
|
||||
$(INSTALL_DATA) -m 0444 -D files/etc/dppd/server.pem $(1)/etc/dppd/server.pem
|
||||
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,dppd-creds-dummy))
|
||||
13
utils/dppd-creds-dummy/files/README
Normal file
13
utils/dppd-creds-dummy/files/README
Normal file
@ -0,0 +1,13 @@
|
||||
This folder contains sample configuration and key material for the purposes
|
||||
of TESTING ONLY
|
||||
|
||||
make-ca.sh will regenerate the CA. Note that doing so means the mobile app
|
||||
will need to be rebuilt with the new CA. And the ca.cer file placed in
|
||||
app/android/app/src/main/assets/ca_out.cer, this will also be picked up by the
|
||||
iOS builds.
|
||||
|
||||
sign-cert.sh will create a signed server certificate for the current machine.
|
||||
Have a look inside this script if you want to generate a certificate for
|
||||
another machine. You will need to output of this script, <hostname>.pem and
|
||||
<hostname>.key to the dppd server. For convenience the script also symlinks
|
||||
server.pem and server.key to the key pair it last generated.
|
||||
16
utils/dppd-creds-dummy/files/etc/dppd/auth_secrets.txt
Normal file
16
utils/dppd-creds-dummy/files/etc/dppd/auth_secrets.txt
Normal file
@ -0,0 +1,16 @@
|
||||
# This file holds the authorised credentials that the DPP HTTP server will
|
||||
# accept
|
||||
#
|
||||
# The format of this file is:
|
||||
# <username><whitespace><password>
|
||||
# e.g.
|
||||
# myuser mypassword
|
||||
# anotheruser I have spaces in my password
|
||||
#
|
||||
# Where the first whitespace splits the username from the password
|
||||
# Note: Whitespace at either end of a password is trimmed
|
||||
#
|
||||
# username password
|
||||
|
||||
morse HaLow
|
||||
|
||||
52
utils/dppd-creds-dummy/files/etc/dppd/server.key
Normal file
52
utils/dppd-creds-dummy/files/etc/dppd/server.key
Normal file
@ -0,0 +1,52 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
JQBIBS+JFWg2DpNyLPYiNPzbjp3vyA==
|
||||
-----END PRIVATE KEY-----
|
||||
34
utils/dppd-creds-dummy/files/etc/dppd/server.pem
Normal file
34
utils/dppd-creds-dummy/files/etc/dppd/server.pem
Normal file
@ -0,0 +1,34 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
87MvF1G2FW5q6w==
|
||||
-----END CERTIFICATE-----
|
||||
18
utils/dppd-creds-dummy/files/make-ca.sh
Executable file
18
utils/dppd-creds-dummy/files/make-ca.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# The filename to save the CA as
|
||||
NAME=ca
|
||||
|
||||
set -e
|
||||
|
||||
if [ -e "${NAME}".pem ]; then
|
||||
echo "Are you sure you want to regenerate the root CA? The app will need updating."
|
||||
echo "Please delete ca.pem if you are sure you want to regenerate the CA"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# Make our testing CA last 5 years
|
||||
openssl req -nodes -x509 -newkey rsa:4096 -keyout "${NAME}".key -out "${NAME}".pem -days 1825 -subj "/C=AU/O=Morse Micro/OU=Development/CN=Dppd Test CA"
|
||||
|
||||
openssl x509 -in "${NAME}".pem -outform der -out "${NAME}".cer
|
||||
openssl x509 -in "${NAME}".pem -text
|
||||
66
utils/dppd-creds-dummy/files/sign-cert.sh
Executable file
66
utils/dppd-creds-dummy/files/sign-cert.sh
Executable file
@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Exit if any commands return an error
|
||||
set -e
|
||||
|
||||
# This will try and automatically generate the correct certificate for this machine
|
||||
# If it doesn't, or you need to generate for another machine
|
||||
# You can manually override any of NAME, CA_NAME, HOSTNAME, ADDR as needed
|
||||
|
||||
# The filename to save this certificate to
|
||||
NAME="$(hostname)"
|
||||
CA_NAME=ca
|
||||
# The local hostname to include within the certificate
|
||||
HOSTNAME="$(hostname)"
|
||||
LONGHOSTNAME="$(hostname -f)"
|
||||
# A local address to include within the certificate
|
||||
DEFAULT_INTERFACE="$(ip route show default | awk '/default/ {print $3}')"
|
||||
ADDR="$DEFAULT_INTERFACE"
|
||||
|
||||
openssl req -nodes -newkey rsa:4096 -keyout "$NAME".key \
|
||||
-out "$NAME".csr -subj "/C=AU/O=Morse Micro/OU=Development/CN=$HOSTNAME"
|
||||
|
||||
# Generate our AltNames
|
||||
ALT_NAMES="IP:127.0.0.1,DNS:localhost"
|
||||
if [ -n "$ADDR" ]; then
|
||||
ALT_NAMES="$ALT_NAMES,IP:$ADDR"
|
||||
fi
|
||||
if [ -n "$HOSTNAME" ]; then
|
||||
ALT_NAMES="$ALT_NAMES,DNS:$HOSTNAME,DNS:$HOSTNAME.local"
|
||||
# If another device with the same name already exists on the network
|
||||
# avahi will try HOSTNAME-2, -3, -4 etc ... see avahi_alternative_host_name
|
||||
# So we also sign for "-2"
|
||||
ALT_NAMES="$ALT_NAMES,DNS:$HOSTNAME-2,DNS:$HOSTNAME-2.local"
|
||||
fi
|
||||
if [ -n "$LONGHOSTNAME" ] && [ "$HOSTNAME" != "$LONGHOSTNAME" ]; then
|
||||
# Generate for the long hostname
|
||||
ALT_NAMES="$ALT_NAMES,DNS:$LONGHOSTNAME"
|
||||
fi
|
||||
|
||||
echo "subjectAltName" "$ALT_NAMES"
|
||||
|
||||
EXT='[v3_cert]
|
||||
basicConstraints = CA:FALSE
|
||||
keyUsage = digitalSignature, keyEncipherment
|
||||
subjectAltName = '"$ALT_NAMES"'
|
||||
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
|
||||
'
|
||||
|
||||
echo "$EXT" > auto_ext.conf
|
||||
|
||||
openssl x509 -req -in "$NAME".csr -CA "$CA_NAME".pem -CAkey "$CA_NAME".key \
|
||||
-CAcreateserial -out "$NAME".pem -extensions v3_cert \
|
||||
-extfile ./auto_ext.conf
|
||||
|
||||
rm auto_ext.conf
|
||||
|
||||
openssl x509 -in "$NAME".pem -outform der -out "$NAME".cer
|
||||
openssl x509 -in "$NAME".pem -text
|
||||
|
||||
ln -fs "$NAME".pem server.pem
|
||||
ln -fs "$NAME".key server.key
|
||||
|
||||
cat "$NAME".pem "$CA_NAME".pem > "$NAME"-bundle.pem
|
||||
|
||||
echo "Find your certificate $NAME.pem and the keyfile $NAME.key"
|
||||
echo "These have also been symlinked to server.pem and server.key"
|
||||
Loading…
x
Reference in New Issue
Block a user