nginx: separate self-signed certs
This commit is contained in:
		| @ -1,4 +1,5 @@ | ||||
| base_domain: "dev.local" | ||||
| self_signed: false | ||||
| admin_email: "lukas@kucharczyk.xyz" | ||||
| server_ip: "192.168.0.107" | ||||
| data_folder: "{{ playbook_dir }}/docker-data" | ||||
|  | ||||
| @ -5,59 +5,9 @@ | ||||
|     mode: '0755' | ||||
|   loop: | ||||
|     - "{{ nginx_confd_folder }}" | ||||
| - name: generate root ca | ||||
|   command: openssl req \ | ||||
|                     -x509 \ | ||||
|                     -new \ | ||||
|                     -nodes \ | ||||
|                     -newkey rsa:2048 \ | ||||
|                     -keyout "{{ data_folder }}/nginx/rootca.key" \ | ||||
|                     -out "{{ data_folder }}/nginx/rootca.pem" \ | ||||
|                     -sha256 \ | ||||
|                     -days 3650 \ | ||||
|                     -subj "/C=CZ/L=Prague/CN=Homelab/emailAddress={{ admin_email }}" | ||||
|   args: | ||||
|     creates: rootca.* | ||||
| - name: generate wildcard csr | ||||
|   command: openssl req \ | ||||
|                     -new \ | ||||
|                     -nodes \ | ||||
|                     -newkey rsa:2048 \ | ||||
|                     -keyout "{{ data_folder }}/nginx/{{ base_domain }}.key" \ | ||||
|                     -out "{{ data_folder }}/nginx/{{ base_domain }}.csr" \ | ||||
|                     -subj "/C=CZ/L=Prague/CN=*.{{ base_domain }}/emailAddress={{ admin_email }}" | ||||
|   args: | ||||
|     creates: "{{ data_folder }}/nginx/{{ base_domain }}.*" | ||||
| - name: sign wildcard csr with root ca | ||||
|   command: openssl x509 \ | ||||
|                     -req \ | ||||
|                     -in "{{ data_folder }}/nginx/{{ base_domain }}.csr" \ | ||||
|                     -CA "{{ data_folder }}/nginx/rootca.pem" \ | ||||
|                     -CAkey "{{ data_folder }}/nginx/rootca.key" \ | ||||
|                     -CAcreateserial \ | ||||
|                     -out "{{ data_folder }}/nginx/{{ base_domain }}.crt" \ | ||||
|                     -days 3650 \ | ||||
|                     -sha256 | ||||
|   args: | ||||
|     creates: "{{ data_folder }}/nginx/{{ base_domain }}.crt" | ||||
| - name: install root ca | ||||
|   command: trust anchor "{{ data_folder }}/nginx/rootca.pem" | ||||
|   args: | ||||
|     creates: /etc/ca-certificates/extracted/cadir/Homelab* | ||||
|   become: yes | ||||
| - name: copy certificates | ||||
|   copy: | ||||
|     src: "{{ item }}" | ||||
|     dest: "{{ data_folder }}/nginx" | ||||
|     mode: '0755' | ||||
|   loop: | ||||
|     - "{{ data_folder }}/nginx/{{ base_domain }}.key" | ||||
|     - "{{ data_folder }}/nginx/{{ base_domain }}.crt" | ||||
| - name: copy .conf file | ||||
|   template: | ||||
|     src: nginx.conf.j2 | ||||
|     dest: "{{ data_folder }}/nginx/nginx.conf" | ||||
|     mode: '0755' | ||||
| - name: generate and install self-signed certs | ||||
|   import_tasks: self-signed.yml | ||||
|   when: self_signed | ||||
| - name: create nginx bridge network | ||||
|   docker_network: | ||||
|     name: nginx-internal | ||||
|  | ||||
							
								
								
									
										37
									
								
								roles/nginx/tasks/self-signed.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								roles/nginx/tasks/self-signed.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | ||||
| - name: generate root ca | ||||
|   command: openssl req \ | ||||
|                     -x509 \ | ||||
|                     -new \ | ||||
|                     -nodes \ | ||||
|                     -newkey rsa:2048 \ | ||||
|                     -keyout "{{ data_folder }}/nginx/rootca.key" \ | ||||
|                     -out "{{ data_folder }}/nginx/rootca.pem" \ | ||||
|                     -sha256 \ | ||||
|                     -days 3650 \ | ||||
|                     -subj "/C=CZ/L=Prague/CN=Homelab/emailAddress={{ admin_email }}" | ||||
| - name: generate wildcard csr | ||||
|   command: openssl req \ | ||||
|                     -new \ | ||||
|                     -nodes \ | ||||
|                     -newkey rsa:2048 \ | ||||
|                     -keyout "{{ data_folder }}/nginx/{{ base_domain }}.key" \ | ||||
|                     -out "{{ data_folder }}/nginx/{{ base_domain }}.csr" \ | ||||
|                     -subj "/C=CZ/L=Prague/CN=*.{{ base_domain }}/emailAddress={{ admin_email }}" | ||||
| - name: sign wildcard csr with root ca | ||||
|   command: openssl x509 \ | ||||
|                     -req \ | ||||
|                     -in "{{ data_folder }}/nginx/{{ base_domain }}.csr" \ | ||||
|                     -CA "{{ data_folder }}/nginx/rootca.pem" \ | ||||
|                     -CAkey "{{ data_folder }}/nginx/rootca.key" \ | ||||
|                     -CAcreateserial \ | ||||
|                     -out "{{ data_folder }}/nginx/{{ base_domain }}.crt" \ | ||||
|                     -days 3650 \ | ||||
|                     -sha256 | ||||
| - name: install root ca | ||||
|   command: trust anchor "{{ data_folder }}/nginx/rootca.pem" | ||||
|   become: yes | ||||
| - name: copy .conf file | ||||
|   template: | ||||
|     src: nginx.conf.j2 | ||||
|     dest: "{{ data_folder }}/nginx/nginx.conf" | ||||
|     mode: '0755' | ||||
		Reference in New Issue
	
	Block a user