algo
algo copied to clipboard
iPhone: "Profile Installation Failed" - The password for the certificate "phone.p12" is incorrect.
Describe the bug
A clear and concise description of what the bug is.
When Algo is deployed on aUbuntu 20.04 server successfully with no errors, the IKEv2 profile on iOS cannot be installed and provides the error "Profile Installation Failed" - The password for the certificate "phone.p12" is incorrect.
To Reproduce
Steps to reproduce the behavior:
- Install Algo as mentioned in the documentation
- Copy the provisioning profile to the iPhone and install it
- There is no password prompt, and the error shows up.
Expected behavior
A clear and concise description of what you expected to happen.
That the profile can be installed correctly
Additional context
Add any other context about the problem here.
The profiles for Wireguard work correctly. The version of iOS is 16.0.3 (20A392)
Full log
PUT THE OUTPUT HERE
PLAY [localhost] ***********************************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************
ok: [localhost]
TASK [Playbook dir stat] ***************************************************************************************************
ok: [localhost]
TASK [Ensure Ansible is not being run in a world writable directory] *******************************************************
ok: [localhost] => {
"changed": false,
"msg": "All assertions passed"
}
[DEPRECATION WARNING]: Use 'ansible.utils.ipaddr' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[WARNING]: The value '' is not a valid IP address or network, passing this value to ipaddr filter might result in breaking
change in future.
TASK [Ensure the requirements installed] ***********************************************************************************
ok: [localhost]
TASK [Set required ansible version as a fact] ******************************************************************************
ok: [localhost] => (item=ansible==6.1.0)
TASK [Just get the list from default pip] **********************************************************************************
ok: [localhost]
TASK [Verify Python meets Algo VPN requirements] ***************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "All assertions passed"
}
TASK [Verify Ansible meets Algo VPN requirements] **************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "All assertions passed"
}
[WARNING]: Found variable using reserved name: no_log
PLAY [Ask user for the input] **********************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************
ok: [localhost]
[Cloud prompt]
What provider would you like to use?
1. DigitalOcean
2. Amazon Lightsail
3. Amazon EC2
4. Microsoft Azure
5. Google Compute Engine
6. Hetzner Cloud
7. Vultr
8. Scaleway
9. OpenStack (DreamCompute optimised)
10. CloudStack (Exoscale optimised)
11. Linode
12. Install to existing Ubuntu 18.04 or 20.04 server (for more advanced users)
Enter the number of your desired provider
:
12^M
TASK [Cloud prompt] ********************************************************************************************************
ok: [localhost]
TASK [Set facts based on the input] ****************************************************************************************
ok: [localhost]
[Cellular On Demand prompt]
Do you want macOS/iOS clients to enable "Connect On Demand" when connected to cellular networks?
[y/N]
:
n^M
TASK [Cellular On Demand prompt] *******************************************************************************************
ok: [localhost]
[Wi-Fi On Demand prompt]
Do you want macOS/iOS clients to enable "Connect On Demand" when connected to Wi-Fi?
[y/N]
:
n^M
TASK [Wi-Fi On Demand prompt] **********************************************************************************************
ok: [localhost]
[Retain the PKI prompt]
Do you want to retain the keys (PKI)? (required to add users in the future, but less secure)
[y/N]
:
y^M
TASK [Retain the PKI prompt] ***********************************************************************************************
ok: [localhost]
[DNS adblocking prompt]
Do you want to enable DNS ad blocking on this VPN server?
[y/N]
:
y^M
TASK [DNS adblocking prompt] ***********************************************************************************************
ok: [localhost]
[SSH tunneling prompt]
Do you want each user to have their own account for SSH tunneling?
[y/N]
:
y^M
TASK [SSH tunneling prompt] ************************************************************************************************
ok: [localhost]
TASK [Set facts based on the input] ****************************************************************************************
ok: [localhost]
PLAY [Provision the server] ************************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************
ok: [localhost]
--> Please include the following block of text when reporting issues:
Algo running on: Fedora Linux 37 (Workstation Edition) (Virtualized: microsoft)
Created from git clone. Last commit: 651f949 Update cloud-hetzner.md (#14450)
Python 3.11.0
Runtime variables:
algo_provider "local"
algo_ondemand_cellular "False"
algo_ondemand_wifi "False"
algo_ondemand_wifi_exclude "X251bGw="
algo_dns_adblocking "True"
algo_ssh_tunneling "True"
wireguard_enabled "True"
dns_encryption "True"
TASK [Display the invocation environment] **********************************************************************************
changed: [localhost]
TASK [Install the requirements] ********************************************************************************************
changed: [localhost]
TASK [Include a provisioning role] *****************************************************************************************
[local : pause]
https://trailofbits.github.io/algo/deploy-to-ubuntu.html
Local installation might break your server. Use at your own risk.
Proceed? Press ENTER to continue or CTRL+C and A to abort...:
^M
TASK [local : pause] *******************************************************************************************************
ok: [localhost] => (item=https://trailofbits.github.io/algo/deploy-to-ubuntu.html
Local installation might break your server. Use at your own risk.
Proceed? Press ENTER to continue or CTRL+C and A to abort...)
[local : pause]
Enter the IP address of your server: (or use localhost for local installation):
[localhost]
:
TASK [local : pause] *******************************************************************************************************
ok: [localhost]
TASK [local : Set the facts] ***********************************************************************************************
ok: [localhost]
[local : pause]
What user should we use to login on the server? (note: passwordless login required, or ignore if you're deploying to localhost)
[root]
:
ubuntu^M
TASK [local : pause] *******************************************************************************************************
ok: [localhost]
TASK [local : Set the facts] ***********************************************************************************************
ok: [localhost]
[local : pause]
Enter the public IP address or domain name of your server: (IMPORTANT! This is used to verify the certificate)
:
^M
TASK [local : pause] *******************************************************************************************************
ok: [localhost]
TASK [local : Set the facts] ***********************************************************************************************
ok: [localhost]
TASK [Set subjectAltName as a fact] ****************************************************************************************
ok: [localhost]
TASK [Add the server to an inventory group] ********************************************************************************
changed: [localhost]
TASK [Wait until SSH becomes ready...] *************************************************************************************
ok: [localhost]
TASK [debug] ***************************************************************************************************************
ok: [localhost] => {
"IP_subject_alt_name":
}
TASK [Wait 600 seconds for target connection to become reachable/usable] ***************************************************
ok: [localhost -> ] => (item=)
PLAY [Configure the server and install required software] ******************************************************************
TASK [Ensure the config directory exists] **********************************************************************************
changed: [ -> localhost]
TASK [Dump the ssh config] *************************************************************************************************
changed: [ -> localhost]
TASK [common : Check the system] *******************************************************************************************
ok: []
TASK [common : include_tasks] **********************************************************************************************
included: /home/user/al1/algo/roles/common/tasks/ubuntu.yml for
TASK [common : Gather facts] ***********************************************************************************************
ok: []
TASK [common : Install unattended-upgrades] ********************************************************************************
ok: []
TASK [common : Configure unattended-upgrades] ******************************************************************************
changed: []
TASK [common : Periodic upgrades configured] *******************************************************************************
changed: []
TASK [common : Disable MOTD on login and SSHD] *****************************************************************************
changed: [] => (item={'regexp': '^session.*optional.*pam_motd.so.*', 'line': '# MOTD DISABLED', 'file': '/etc/pam.d/login'})
changed: [] => (item={'regexp': '^session.*optional.*pam_motd.so.*', 'line': '# MOTD DISABLED', 'file': '/etc/pam.d/sshd'})
[WARNING]: Module remote_tmp /root/.ansible/tmp did not exist and was created with a mode of 0700, this may cause issues
when running as another user. To avoid this, create the remote_tmp dir with the correct permissions manually
TASK [common : Ensure fallback resolvers are set] **************************************************************************
changed: []
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [common : Loopback for services configured] ***************************************************************************
changed: []
TASK [common : systemd services enabled and started] ***********************************************************************
ok: [] => (item=systemd-networkd)
ok: [] => (item=systemd-resolved)
RUNNING HANDLER [common : restart systemd-networkd] ************************************************************************
changed: []
RUNNING HANDLER [common : restart systemd-resolved] ************************************************************************
changed: []
TASK [common : Check apparmor support] *************************************************************************************
ok: []
TASK [common : Set fact if apparmor enabled] *******************************************************************************
ok: []
TASK [common : Define facts] ***********************************************************************************************
ok: []
TASK [common : Set facts] **************************************************************************************************
ok: []
TASK [common : Set IPv6 support as a fact] *********************************************************************************
ok: []
TASK [common : Check size of MTU] ******************************************************************************************
ok: []
TASK [common : Set OS specific facts] **************************************************************************************
ok: []
TASK [common : Install tools] **********************************************************************************************
changed: []
TASK [common : include_tasks] **********************************************************************************************
included: /home/user/al1/algo/roles/common/tasks/iptables.yml for
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [common : Iptables configured] ****************************************************************************************
changed: [] => (item={'src': 'rules.v4.j2', 'dest': '/etc/iptables/rules.v4'})
TASK [common : Sysctl tuning] **********************************************************************************************
changed: [] => (item={'item': 'net.ipv4.ip_forward', 'value': 1})
changed: [] => (item={'item': 'net.ipv4.conf.all.forwarding', 'value': 1})
RUNNING HANDLER [common : restart iptables] ********************************************************************************
changed: []
TASK [dns : Include tasks for Ubuntu] **************************************************************************************
included: /home/user/al1/algo/roles/dns/tasks/ubuntu.yml for
TASK [dns : Install dnscrypt-proxy] ****************************************************************************************
changed: []
TASK [dns : Ubuntu | Configure AppArmor policy for dnscrypt-proxy] *********************************************************
changed: []
TASK [dns : Ubuntu | Enforce the dnscrypt-proxy AppArmor policy] ***********************************************************
ok: []
TASK [dns : Ubuntu | Ensure that the dnscrypt-proxy service directory exist] ***********************************************
changed: []
TASK [dns : Ubuntu | Add custom requirements to successfully start the unit] ***********************************************
changed: []
TASK [dns : dnscrypt-proxy ip-blacklist configured] ************************************************************************
changed: []
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [dns : dnscrypt-proxy configured] *************************************************************************************
changed: []
TASK [dns : Adblock script created] ****************************************************************************************
changed: []
TASK [dns : Adblock script added to cron] **********************************************************************************
changed: []
TASK [dns : Update adblock hosts] ******************************************************************************************
ok: []
[WARNING]: flush_handlers task does not support when conditional
RUNNING HANDLER [dns : restart dnscrypt-proxy] *****************************************************************************
changed: []
TASK [dns : dnscrypt-proxy enabled and started] ****************************************************************************
ok: []
TASK [wireguard : Ensure the required directories exist] *******************************************************************
changed: [ -> localhost] => (item=configs//wireguard//.pki//preshared)
changed: [ -> localhost] => (item=configs//wireguard//.pki//private)
changed: [ -> localhost] => (item=configs//wireguard//.pki//public)
changed: [ -> localhost] => (item=configs//wireguard//apple/ios)
changed: [ -> localhost] => (item=configs//wireguard//apple/macos)
TASK [wireguard : Include tasks for Ubuntu] ********************************************************************************
included: /home/user/al1/algo/roles/wireguard/tasks/ubuntu.yml for
TASK [wireguard : WireGuard installed] *************************************************************************************
changed: []
TASK [wireguard : Set OS specific facts] ***********************************************************************************
ok: []
TASK [wireguard : Generate private keys] ***********************************************************************************
changed: [] => (item=phone)
changed: [] => (item=laptop)
changed: [] => (item=desktop)
changed: [] => (item=)
TASK [wireguard : Save private keys] ***************************************************************************************
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost]
TASK [wireguard : Touch the lock file] *************************************************************************************
changed: [] => (item=phone)
changed: [] => (item=laptop)
changed: [] => (item=desktop)
changed: [] => (item=)
TASK [wireguard : Generate preshared keys] *********************************************************************************
changed: [] => (item=phone)
changed: [] => (item=laptop)
changed: [] => (item=desktop)
changed: [] => (item=)
TASK [wireguard : Save preshared keys] *************************************************************************************
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost]
TASK [wireguard : Touch the preshared lock file] ***************************************************************************
changed: [] => (item=phone)
changed: [] => (item=laptop)
changed: [] => (item=desktop)
changed: [] => (item=)
TASK [wireguard : Generate public keys] ************************************************************************************
ok: [] => (item=phone)
ok: [] => (item=laptop)
ok: [] => (item=desktop)
ok: [] => (item=)
TASK [wireguard : Save public keys] ****************************************************************************************
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost]
TASK [wireguard : WireGuard user list updated] *****************************************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [wireguard : set_fact] ************************************************************************************************
ok: [ -> localhost]
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [wireguard : WireGuard users config generated] ************************************************************************
changed: [ -> localhost] => (item=[0, 'phone'])
changed: [ -> localhost] => (item=[1, 'laptop'])
changed: [ -> localhost] => (item=[2, 'desktop'])
TASK [wireguard : include_tasks] *******************************************************************************************
included: /home/user/al1/algo/roles/wireguard/tasks/mobileconfig.yml for => (item=ios)
included: /home/user/al1/algo/roles/wireguard/tasks/mobileconfig.yml for => (item=macos)
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [wireguard : WireGuard apple mobileconfig generated] ******************************************************************
changed: [ -> localhost] => (item=[0, 'phone'])
changed: [ -> localhost] => (item=[1, 'laptop'])
changed: [ -> localhost] => (item=[2, 'desktop'])
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [wireguard : WireGuard apple mobileconfig generated] ******************************************************************
changed: [ -> localhost] => (item=[0, 'phone'])
changed: [ -> localhost] => (item=[1, 'laptop'])
changed: [ -> localhost] => (item=[2, 'desktop'])
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [wireguard : Generate QR codes] ***************************************************************************************
ok: [ -> localhost] => (item=[0, 'phone'])
ok: [ -> localhost] => (item=[1, 'laptop'])
ok: [ -> localhost] => (item=[2, 'desktop'])
[DEPRECATION WARNING]: Use 'ansible.utils.ipv4' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: Use 'ansible.utils.ipv6' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: Use 'ansible.utils.ipaddr' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [wireguard : WireGuard configured] ************************************************************************************
changed: []
TASK [wireguard : WireGuard enabled and started] ***************************************************************************
changed: []
RUNNING HANDLER [wireguard : restart wireguard] ****************************************************************************
changed: []
TASK [strongswan : include_tasks] ******************************************************************************************
included: /home/user/al1/algo/roles/strongswan/tasks/ubuntu.yml for
TASK [strongswan : Set OS specific facts] **********************************************************************************
ok: []
TASK [strongswan : Ubuntu | Install strongSwan] ****************************************************************************
changed: []
TASK [strongswan : Ubuntu | Charon profile for apparmor configured] ********************************************************
changed: []
TASK [strongswan : Ubuntu | Enforcing ipsec with apparmor] *****************************************************************
ok: [] => (item=/usr/lib/ipsec/charon)
ok: [] => (item=/usr/lib/ipsec/lookip)
ok: [] => (item=/usr/lib/ipsec/stroke)
TASK [strongswan : Ubuntu | Enable services] *******************************************************************************
ok: [] => (item=apparmor)
ok: [] => (item=strongswan-starter)
ok: [] => (item=netfilter-persistent)
TASK [strongswan : Ubuntu | Ensure that the strongswan service directory exists] *******************************************
changed: []
TASK [strongswan : Ubuntu | Setup the cgroup limitations for the ipsec daemon] *********************************************
changed: []
TASK [strongswan : Ensure that the strongswan user exists] *****************************************************************
ok: []
TASK [strongswan : Install strongSwan] *************************************************************************************
ok: []
TASK [strongswan : Setup the config files from our templates] **************************************************************
changed: [] => (item={'src': 'strongswan.conf.j2', 'dest': 'strongswan.conf', 'owner': 'root', 'group': 'root', 'mode': '0644'})
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
changed: [] => (item={'src': 'ipsec.conf.j2', 'dest': 'ipsec.conf', 'owner': 'root', 'group': 'root', 'mode': '0644'})
changed: [] => (item={'src': 'ipsec.secrets.j2', 'dest': 'ipsec.secrets', 'owner': 'strongswan', 'group': 'root', 'mode': '0600'})
changed: [] => (item={'src': 'charon.conf.j2', 'dest': 'strongswan.d/charon.conf', 'owner': 'root', 'group': 'root', 'mode': '0644'})
TASK [strongswan : Get loaded plugins] *************************************************************************************
ok: []
TASK [strongswan : Disable unneeded plugins] *******************************************************************************
changed: [] => (item=mgf1)
changed: [] => (item=md5)
changed: [] => (item=xauth-generic)
changed: [] => (item=dnskey)
changed: [] => (item=rc2)
changed: [] => (item=resolve)
changed: [] => (item=sshkey)
changed: [] => (item=agent)
changed: [] => (item=attr)
changed: [] => (item=bypass-lan)
changed: [] => (item=eap-mschapv2)
changed: [] => (item=gmp)
changed: [] => (item=counters)
changed: [] => (item=xcbc)
changed: [] => (item=aesni)
changed: [] => (item=drbg)
changed: [] => (item=constraints)
changed: [] => (item=sha1)
changed: [] => (item=fips-prf)
changed: [] => (item=connmark)
changed: [] => (item=pkcs1)
changed: [] => (item=updown)
TASK [strongswan : Ensure that required plugins are enabled] ***************************************************************
changed: [] => (item=kernel-netlink)
changed: [] => (item=socket-default)
changed: [] => (item=gcm)
changed: [] => (item=revocation)
changed: [] => (item=pgp)
changed: [] => (item=pkcs12)
changed: [] => (item=nonce)
changed: [] => (item=openssl)
changed: [] => (item=stroke)
changed: [] => (item=pubkey)
changed: [] => (item=random)
changed: [] => (item=pkcs8)
changed: [] => (item=pem)
changed: [] => (item=sha2)
changed: [] => (item=hmac)
changed: [] => (item=aes)
changed: [] => (item=pkcs7)
changed: [] => (item=x509)
TASK [strongswan : debug] **************************************************************************************************
ok: [ -> localhost] => {
"subjectAltName": "IP:"
}
TASK [strongswan : Ensure the pki directories exist] ***********************************************************************
changed: [ -> localhost] => (item=ecparams)
changed: [ -> localhost] => (item=certs)
changed: [ -> localhost] => (item=crl)
changed: [ -> localhost] => (item=newcerts)
changed: [ -> localhost] => (item=private)
changed: [ -> localhost] => (item=public)
changed: [ -> localhost] => (item=reqs)
TASK [strongswan : Ensure the config directories exist] ********************************************************************
changed: [ -> localhost] => (item=apple)
changed: [ -> localhost] => (item=manual)
TASK [strongswan : Ensure the files exist] *********************************************************************************
changed: [ -> localhost] => (item=.rnd)
changed: [ -> localhost] => (item=private/.rnd)
changed: [ -> localhost] => (item=index.txt)
changed: [ -> localhost] => (item=index.txt.attr)
changed: [ -> localhost] => (item=serial)
TASK [strongswan : Generate the openssl server configs] ********************************************************************
changed: [ -> localhost]
TASK [strongswan : Build the CA pair] **************************************************************************************
changed: [ -> localhost]
TASK [strongswan : Copy the CA certificate] ********************************************************************************
changed: [ -> localhost]
TASK [strongswan : Generate the serial number] *****************************************************************************
changed: [ -> localhost]
TASK [strongswan : Build the server pair] **********************************************************************************
changed: [ -> localhost]
TASK [strongswan : Build the client's pair] ********************************************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [strongswan : Build openssh public keys] ******************************************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [strongswan : Build the client's p12] *********************************************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [strongswan : Build the client's p12 with the CA cert included] *******************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [strongswan : Copy the p12 certificates] ******************************************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [strongswan : Get active users] ***************************************************************************************
changed: [ -> localhost]
TASK [strongswan : Copy the keys to the strongswan directory] **************************************************************
changed: [] => (item={'src': 'cacert.pem', 'dest': 'cacerts/ca.crt', 'owner': 'strongswan', 'group': 'root', 'mode': '0600'})
changed: [] => (item={'src': 'certs/.crt', 'dest': 'certs/.crt', 'owner': 'strongswan', 'group': 'root', 'mode': '0600'})
changed: [] => (item={'src': 'private/.key', 'dest': 'private/.key', 'owner': 'strongswan', 'group': 'root', 'mode': '0600'})
TASK [strongswan : Register p12 PayloadContent] ****************************************************************************
ok: [ -> localhost] => (item=phone)
ok: [ -> localhost] => (item=laptop)
ok: [ -> localhost] => (item=desktop)
TASK [strongswan : Set facts for mobileconfigs] ****************************************************************************
ok: [ -> localhost]
TASK [strongswan : Build the mobileconfigs] ********************************************************************************
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost]
TASK [strongswan : Build the client ipsec config file] *********************************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [strongswan : Build the client ipsec secret file] *********************************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [strongswan : Restrict permissions for the local private directories] *************************************************
ok: [ -> localhost]
TASK [strongswan : strongSwan started] *************************************************************************************
ok: []
RUNNING HANDLER [strongswan : restart strongswan] **************************************************************************
changed: []
RUNNING HANDLER [strongswan : daemon-reload] *******************************************************************************
ok: []
TASK [ssh_tunneling : Ensure that the sshd_config file has desired options] ************************************************
changed: []
TASK [ssh_tunneling : Ensure that the algo group exist] ********************************************************************
changed: []
TASK [ssh_tunneling : Ensure that the jail directory exist] ****************************************************************
changed: []
TASK [ssh_tunneling : Ensure that the SSH users exist] *********************************************************************
changed: [] => (item=phone)
changed: [] => (item=laptop)
changed: [] => (item=desktop)
[WARNING]: 'append' is set, but no 'groups' are specified. Use 'groups' for appending new groups.This will change to an
error in Ansible 2.14.
TASK [ssh_tunneling : Ensure the config directories exist] *****************************************************************
changed: [ -> localhost]
TASK [ssh_tunneling : Check if the private keys exist] *********************************************************************
ok: [ -> localhost] => (item=phone)
ok: [ -> localhost] => (item=laptop)
ok: [ -> localhost] => (item=desktop)
TASK [ssh_tunneling : Build ssh private keys] ******************************************************************************
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost]
TASK [ssh_tunneling : Build ssh public keys] *******************************************************************************
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost] => (item=None)
changed: [ -> localhost]
TASK [ssh_tunneling : Build the client ssh config] *************************************************************************
changed: [ -> localhost] => (item=phone)
changed: [ -> localhost] => (item=laptop)
changed: [ -> localhost] => (item=desktop)
TASK [ssh_tunneling : The authorized keys file created] ********************************************************************
changed: [] => (item=phone)
changed: [] => (item=laptop)
changed: [] => (item=desktop)
TASK [ssh_tunneling : Get active users] ************************************************************************************
ok: []
TASK [ssh_tunneling : Delete non-existing users] ***************************************************************************
ok: [] => (item=)
TASK [Dump the configuration] **********************************************************************************************
changed: [ -> localhost]
[DEPRECATION WARNING]: Use 'ansible.utils.ipmath' module instead. This feature will be removed from ansible.netcommon in a
release after 2024-01-01. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
TASK [debug] ***************************************************************************************************************
ok: [] => {
"msg": [
[
"\"# Congratulations! #\"",
"\"# Your Algo server is running. #\"",
"\"# Config files and certificates are in the ./configs/ directory. #\"",
"\"# Go to https://whoer.net/ after connecting #\"",
"\"# and ensure that all your traffic passes through the VPN. #\"",
"\"# Local DNS resolver #\"",
""
],
" \"# The p12 and SSH keys password for new users is #\"\n",
" \"# The CA key password is #\"\n",
" "
]
}
RUNNING HANDLER [ssh_tunneling : restart ssh] ******************************************************************************
changed: []
PLAY RECAP *****************************************************************************************************************
: ok=116 changed=75 unreachable=0 failed=0 skipped=28 rescued=0 ignored=0
localhost : ok=32 changed=3 unreachable=0 failed=0 skipped=11 rescued=0 ignored=0
I got the same problem in ubuntu 22.04 LTS 64bit python3.10.6 OpenSSL 3.0.2 , but it works fine in ubuntu20.04 LTS python3.8.10 OpenSSL 1.1.1f.
Has anyone found a workaround for an already created instance? Also does anyone know if omgagg's changes in the openssl.yml fixes the problem?
Has anyone found a workaround for an already created instance? Also does anyone know if omgagg's changes in the openssl.yml fixes the problem?
The omgagg mods to openssl.yml did work for me in a clean install
I have the same issue as well with the latest Ubuntu 22.04 ... I tried running Algo again but the new p12 password was also incorrect.
Same issue here on the latest Ubuntu 22.04.
Still the same issue on Ubuntu 22.04 LTS
This issue still exists, but I was able to resolve it with a minor edit omgagg's fix of adding the -legacy option and I also ended up completely deleting any stored certs, etc. What didn't work for me was the step that set the fact of the openssl_version on line 162 of openssl.yml.
I didn't want to spend to much time with it, so I just changed this
- name: Get OpenSSL version
set_fact:
openssl_version: "{{ ansible_facts.packages['openssl'][0]['version'] }}"
to explicitly set the version that was installed (lazy fix)
- name: Get OpenSSL version
set_fact:
openssl_version: "3.1.1"
but I think this or a variant of it would work properly (untested - I haven't touched ansible in years)
- name: Get OpenSSL version
shell: openssl version | cut -f 2 -d ' '
register: ssl_version
run_once: true
- name: Save OpenSSL version
set_fact:
openssl_version: {{ ssl_version.stdout }}
https://www.openssl.org/docs/man3.0/man1/openssl-pkcs12.html
I just needed a working VPN again so I wasn't really doing things the right way. I'll fork and update a branch with this fix (and, you know, test it at least once) when I get a chance, but I wanted to document it a little before I forgot completely.
As a followup to my previous message, I've created a branch from the omgagg fix and changed the way it gets the openssl version. Their branch was giving me an error (below) when running in docker and it was simpler to use a shell script to set the fact and seems like it would be more reliable. I've only done limited testing though, and only using locally built docker images.
Here's the error I was getting from omgagg's branch
TASK [strongswan : Get OpenSSL version] ************************************************************************************************************************************
fatal: [18.206.144.149 -> localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'openssl'\n\nThe error appears to be in '/algo/roles/strongswan/tasks/openssl.yml': line 162, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Get OpenSSL version\n ^ here\n"}
Here's my branch with both omgagg's updates and mine, https://github.com/ExtremeModerate/algo/tree/openssl-version. Check that out and build with docker build . -t custom/algo:latest and then run as normal, using your image name.
I haven't figured out why I occasionally need to completely delete my ec2 stack and my local configs directory and start fresh, but I assume it was something I was doing along the way since I could start clean, run a complete build, and then go back and add users successfully multiple times.
Changes work for me but I had to remove lines 158 to 160 on roles/strongswan/tasks/openssl.yml. Those were breaking the install.
Changes work for me but I had to remove lines 158 to 160 on
roles/strongswan/tasks/openssl.yml. Those were breaking the install.
@rdreher
Are these the lines you removed? Sorry, if this is a noobish question.
- name: Build the client's p12 shell: > umask 077;
@akashSugmar He is referring to line numbers in the pull request, not in the master branch.
I tried that it doesn't help
The same problem for me. I tried Ubuntu 22.04, 20.04, 23.04, and I had the same problem installing .mobileconfig in my iOS 17.2. Wireguard works well, but I don’t need it because the ChatGPT app detects VPN on my phone (by protocol) and doesn’t work.
Please Help!
im experiencing this issue too.. can't install mobileconfig profiles on my iPhone. commit 74051d0
Can anyone share their mobileconfig here for debug? Make sure to remove all sensitive info first
Can anyone share their mobileconfig here for debug? Make sure to remove all sensitive info first
Hopefully I didn't share too much/little. Please let me know, especially if I've inadvertently posted something identifiable!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>IKEv2</key>
<dict>
<key>OnDemandEnabled</key>
<integer>1</integer>
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>Connect</string>
<key>InterfaceTypeMatch</key>
<string>WiFi</string>
<key>URLStringProbe</key>
<string>http://captive.apple.com/hotspot-detect.html</string>
</dict>
<dict>
<key>Action</key>
<string>Connect</string>
<key>InterfaceTypeMatch</key>
<string>Cellular</string>
<key>URLStringProbe</key>
<string>http://captive.apple.com/hotspot-detect.html</string>
</dict>
<dict>
<key>Action</key>
<string>Disconnect</string>
</dict>
</array>
<key>AuthenticationMethod</key>
<string>Certificate</string>
<key>ChildSecurityAssociationParameters</key>
<dict>
<key>DiffieHellmanGroup</key>
<integer>20</integer>
<key>EncryptionAlgorithm</key>
<string>AES-256-GCM</string>
<key>IntegrityAlgorithm</key>
<string>SHA2-512</string>
<key>LifeTimeInMinutes</key>
<integer>1440</integer>
</dict>
<key>DeadPeerDetectionRate</key>
<string>Medium</string>
<key>DisableMOBIKE</key>
<integer>0</integer>
<key>DisableRedirect</key>
<integer>1</integer>
<key>EnableCertificateRevocationCheck</key>
<integer>0</integer>
<key>EnablePFS</key>
<true/>
<key>IKESecurityAssociationParameters</key>
<dict>
<key>DiffieHellmanGroup</key>
<integer>20</integer>
<key>EncryptionAlgorithm</key>
<string>AES-256-GCM</string>
<key>IntegrityAlgorithm</key>
<string>SHA2-512</string>
<key>LifeTimeInMinutes</key>
<integer>1440</integer>
</dict>
<key>LocalIdentifier</key>
<string>iphone@********-****-****-****-************.algo</string>
<key>PayloadCertificateUUID</key>
<string>********-****-****-****-************</string>
<key>CertificateType</key>
<string>********</string>
<key>ServerCertificateIssuerCommonName</key>
<string>**.***.**.***</string>
<key>RemoteAddress</key>
<string>**.***.**.***</string>
<key>RemoteIdentifier</key>
<string>**.***.**.***</string>
<key>UseConfigurationAttributeInternalIPSubnet</key>
<integer>0</integer>
</dict>
<key>IPv4</key>
<dict>
<key>OverridePrimary</key>
<integer>1</integer>
</dict>
<key>PayloadDescription</key>
<string>Configures VPN settings</string>
<key>PayloadDisplayName</key>
<string>************</string>
<key>PayloadIdentifier</key>
<string>com.apple.vpn.managed.********-****-****-****-************</string>
<key>PayloadType</key>
<string>com.apple.vpn.managed</string>
<key>PayloadUUID</key>
<string>********-****-****-****-************</string>
<key>PayloadVersion</key>
<real>1</real>
<key>Proxies</key>
<dict>
<key>HTTPEnable</key>
<integer>0</integer>
<key>HTTPSEnable</key>
<integer>0</integer>
</dict>
<key>UserDefinedName</key>
<string>AlgoVPN ************ IKEv2</string>
<key>VPNType</key>
<string>IKEv2</string>
</dict>
<dict>
<key>Password</key>
<string>vzjjvcOXF</string>
<key>PayloadCertificateFileName</key>
<string>iphone.p12</string>
<key>PayloadContent</key>
<data>
************BREGCSqGSIb3DQEHAaCCBQIEggT+MIIE+jCCA1oGCSqGSIb3DQEHBqCCA0swggNHAgEAMIIDQAYJKoZIhvcNAQcBMF8GCSqGSIb3DQEFDTBSMDEGCSqGSIb3DQEFDDAkBBDDIm8/BMHguiBQ0+oBjE3ZAgIIADAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQ8MDqwcs22Fmg5DH/rvkElYCCAtBfbhinIL+t0cZT148HdygTk/T7UWg+PRpi9Ds/ckv8vdtHvh5rVCfzueWdPO1BCKINXsyA/nFfFYh7IfySD0BwaCYKQP/Z6Wvx13g+4jASh1mcRSezQizdRtVxjeCwwkV/s2u9Rs8nV58ceYvrORuqFKgiDYExcWrwQFmjQmRK+DUcucqPSNwRBz04phHAsVKIb1JWfmpktbGa3AwU4DyDdwRfKmNNvFCoH9lQv0uK6CexyncYHF0zBLmOf+CrPBs+k3widNQLJ0FlbJsX6b8RUjl7Lekwxdk5We9tkyfb/qklnPbKhg8Kntz6mlXKOfQnCIuSoUZ1bBpIdnq/xJfVpt34k9hb08ewGYJ6p3vzWNizrDFpdqeChxOPQRJmXBEu5wOPlF7LOwz9rbTQAeppj/6fbZscn5zDoTTC078xXBlr7VHIWpFa6h2A4wiaVsSoX9bfcY2i3nPaG6PT6b1CDiQk1B23rHWRbN0lTTSGdGzMet6VsZDSlCg0Lvo7Kx1hyK8Vk29nsmEjQIVUIUMLK65xPuEIZSx+op9K7evbyzU+TbW0cWX0cMsmb0egGZDRMQ1SIGb5pe0lkm+ApJFGzifleG5fl6Fy5lBaxNjDO8MamOJ5QUY60L8XaPPYA4uVfrmSr1BuKlGoQ/5lwe/HRmvkmSp8AssGWkWC5XKNj/Acln7Y/HTCRUUMv0l0kTQ8dQxMKKhpBg1sw302N049OMbBfojFhab0xlaoSeIrmBGGwm5WUimL/3CyzEUYZXAW4HApboqqHVv/Uy/M6Smqw/gaWYs5lr7JraCrFoNkxNvpN+QweTq0A2pPrPx8D+4GpMJzcHy0VRuMrmX3IUCC32v1TW9hlrpkK/EUbJti3wI7YNorF5wTLObbcDx34r4BD4gRe88uAc7/uRKOvfmezHDKuFAzC33Y+bDUwOWx7D2A58JiBk/JHEcvea0Z/KkwggGYBgkqhkiG9w0BBwGgggGJBIIBhTCCAYEwggF9BgsqhkiG9w0BDAoBAqCCASgwggEkMF8GCSqGSIb3DQEFDTBSMDEGCSqGSIb3DQEFDDAkBBBWIlroMroy28fxsHpeLRDxAgIIADAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQYl+G6andGCqNBc3530s9ggSBwExdn0vfsWxdYUbFyyP6tSyOUfQnQJ4eboKrBb+OYvqFoaUWCxk+IcuCBl3StqJFlZjYJZWOIcx+TaTLRsebzeyfeVoZLH4d02u6uDnMO9G2VIhLBZnE1kDdyPvnnKx9vWSn9ZQLD4y64727wvcwhzvXHjk6atE0kYf7h618ztlHbhiorovvvzRWKY9BpwzUukvW8oGiY93eQYoWCpUKo7ZhA68SDGpmHqUr+DJ2JA01T6UAqUO26nMq5wGPdkpvSTFCMBsGCSqGSIb3DQEJFDEOHgwAbABhAHAAdABvAHAwIwYJKoZIhvcNAQkVMRYEFK4RUTGzqEqwJS9la3kIIeJt3W5hMEEwMTANBglghkgBZQMEAgEFAAQg6/+VdrQxWdWUX7C1akhr4J1J7YR1Hz/hcsUounzWDXIECAb6ABBQNmIRAgIIAA==
</data>
<key>PayloadDescription</key>
<string>Adds a PKCS#12-formatted certificate</string>
<key>PayloadDisplayName</key>
<string>************</string>
<key>PayloadIdentifier</key>
<string>com.apple.security.pkcs12.********-****-****-****-************</string>
<key>PayloadType</key>
<string>com.apple.security.pkcs12</string>
<key>PayloadUUID</key>
<string>********-****-****-****-************</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
<dict>
<key>PayloadCertificateFileName</key>
<string>ca.crt</string>
<key>PayloadContent</key>
<data>
************TiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNxVENDQWk2Z0F3SUJBZ0lVTGlnYUJqS25lcStIUjZWeDUxamJDNmhtQldnd0NnWUlLb1pJemowRUF3SXcKR0RFV01CUUdBMVVFQXd3Tk5qZ3VNVGd6TGpVekxqRTNOekFlRncweU5EQXlNall5TXpNNU1ETmFGdzB6TkRBeQpNak15TXpNNU1ETmFNQmd4RmpBVUJnTlZCQU1NRFRZNExqRTRNeTQxTXk0eE56Y3dkakFRQmdjcWhrak9QUUlCCkJnVXJnUVFBSWdOaUFBUXNwSFNkaDEyT3dyRjVUdUFINi9EaWhDNE9hS0FJRzRncVBmOGlkS0F4RloySFJXYlgKVVIrUk5CcE9UQ2xqNTFtQ2FnaTVwN29pU2JnQkFwS29zWG5vWW9JeW96bkdCRlZSUCtTRXoxb3lDcnoycUZZbAppNGswUjg0SWpQMHNOVDZqZ2dFM01JSUJNekFkQmdOVkhRNEVGZ1FVV0pCWlRhRnFFaytqVVRaRGkyc21pUG9iCnd4Z3dVd1lEVlIwakJFd3dTb0FVV0pCWlRhRnFFaytqVVRaRGkyc21pUG9id3hpaEhLUWFNQmd4RmpBVUJnTlYKQkFNTURUWTRMakU0TXk0MU15NHhOemVDRkM0b0dnWXlwM3F2aDBlbGNlZFkyd3VvWmdWb01CSUdBMVVkRXdFQgovd1FJTUFZQkFmOENBUUF3Z1pzR0ExVWRIZ0VCL3dTQmtEQ0JqYUNCaWpBS2h3aEV0eld4Ly8vLy96QXJnaWs0Ck9URXlNVFEwWXkwNE1EUTFMVFZtT0RrdFlXVmtNaTB5T1RFeU5UWTBZVEprTnpJdVlXeG5iekFyZ1NrNE9URXkKTVRRMFl5MDRNRFExTFRWbU9Ea3RZV1ZrTWkweU9URXlOVFkwWVRKa056SXVZV3huYnpBaWh5QW1CS2lBQ0FBQQpFQUFBQUFBTXJqQUIvLy8vLy8vLy8vLy8vLy8vLy8vLy96QUxCZ05WSFE4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFCkF3SURhUUF3WmdJeEFJeUpvdktVaS9Bdm05eUYrQVBHeENLV3pyMVlLanBnVkcxK0V3WFdOYTMvT3orN1M5dlAKMVpNSVl1T2tuQ3ppVVFJeEFOaUV2WERITXBCaGY2djdnMnVoMTByaWg2NW5JZDQvUHRhMno4MVB2Mzd4dFRIZApJaEtqOVQveER2RmlXSE5QaHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
</data>
<key>PayloadDescription</key>
<string>Adds a CA root certificate</string>
<key>PayloadDisplayName</key>
<string>************</string>
<key>PayloadIdentifier</key>
<string>com.apple.security.root.********-****-****-****-************</string>
<key>PayloadType</key>
<string>com.apple.security.root</string>
<key>PayloadUUID</key>
<string>********-****-****-****-************</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDisplayName</key>
<string>AlgoVPN ************ IKEv2</string>
<key>PayloadIdentifier</key>
<string>donut.local.********-****-****-****-************</string>
<key>PayloadOrganization</key>
<string>AlgoVPN</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>********-****-****-****-************</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Quick followup: I can't install mobileconfig IPsec configurations in Mac OS, either. When I try, I get an error that reads "Profile installation failed. The certificate could not be verified (authentication error)."
It's worth noting that the WireGuard mobileconfig files do work on both iOS and Mac, however. It's just the IPsec ones that have the password/authentication issue.
Quick followup: I can't install mobileconfig IPsec configurations in Mac OS, either. When I try, I get an error that reads "Profile installation failed. The certificate could not be verified (authentication error)."
It's worth noting that the WireGuard mobileconfig files do work on both iOS and Mac, however. It's just the IPsec ones that have the password/authentication issue.
Same here. This issue seems open from 2022, but I still got it now.
This issue seems open from 2022, but I still got it now.
Feel free to submit a PR. I never was able to reproduce the bug in my environment.
@sellersshrug0y
Based on the Pull request here: https://github.com/trailofbits/algo/pull/14622/files with applied rafaelsms's fix and also the comment here: https://github.com/trailofbits/algo/pull/14622#issuecomment-1657393132, I got the mobileconfig installed successfully on my iPhone.
Screen cap for the final workable change on my end, hope you can make it works on your end.
@zenkio I have no idea what I'm doing when it comes to code :( glad you got it working though!
@zenkio I have no idea what I'm doing when it comes to code :( glad you got it working though!
If you are not familiar with modifying code, my forked version can be accessed here: https://github.com/zenkio/algo/tree/fix-profile-install-failed
I am not at the level to raise a PR and test all related things. what I have done is follow the previous comments and make a workable version for my environment.
@zenkio I have no idea what I'm doing when it comes to code :( glad you got it working though!
If you are not familiar with modifying code, my forked version can be accessed here: https://github.com/zenkio/algo/tree/fix-profile-install-failed
I am not at the level to raise a PR and test all related things. what I have done is follow the previous comments and make a workable version for my environment.
this worked!! thanks so much!