Start adding signer containers
This is work in progress to add the signer components
This commit is contained in:
		
							parent
							
								
									f9b0eb5195
								
							
						
					
					
						commit
						e8ad6b9ba7
					
				
					 8 changed files with 189 additions and 3 deletions
				
			
		|  | @ -37,8 +37,8 @@ services: | ||||||
|       DEPLOYMENT_NAME: "CAcert.org Website (local development)" |       DEPLOYMENT_NAME: "CAcert.org Website (local development)" | ||||||
|       MYSQL_WEBDB_HOSTNAME: db |       MYSQL_WEBDB_HOSTNAME: db | ||||||
|       MYSQL_WEBDB_DATABASE: cacert |       MYSQL_WEBDB_DATABASE: cacert | ||||||
|       CSR_DIRECTORY: /csr |       CSR_DIRECTORY: /certs/csr | ||||||
|       CRT_DIRECTORY: /crt |       CRT_DIRECTORY: /certs/crt | ||||||
|       DEFAULT_HOSTNAME: www.cacert.localhost |       DEFAULT_HOSTNAME: www.cacert.localhost | ||||||
|       SECURE_HOSTNAME: secure.cacert.localhost |       SECURE_HOSTNAME: secure.cacert.localhost | ||||||
|       TVERIFY_HOSTNAME: tverify.cacert.localhost |       TVERIFY_HOSTNAME: tverify.cacert.localhost | ||||||
|  | @ -56,6 +56,7 @@ services: | ||||||
|       - smtp |       - smtp | ||||||
|     volumes: |     volumes: | ||||||
|       - ./cacert-software:/www |       - ./cacert-software:/www | ||||||
|  |       - certstaging:/certs | ||||||
|   mgr: |   mgr: | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|  | @ -85,7 +86,36 @@ services: | ||||||
|       - db |       - db | ||||||
|     volumes: |     volumes: | ||||||
|       - ./cacert-cats:/var/www/cats |       - ./cacert-cats:/var/www/cats | ||||||
|  |   signer_client: | ||||||
|  |     build: | ||||||
|  |       context: . | ||||||
|  |       dockerfile: signer_client.Dockerfile | ||||||
|  |     env_file: | ||||||
|  |       - ./.env | ||||||
|  |     environment: | ||||||
|  |       MYSQL_WEBDB_HOSTNAME: db | ||||||
|  |       MYSQL_WEBDB_DATABASE: cacert | ||||||
|  |       CSR_DIRECTORY: /srv/certs/csr | ||||||
|  |       CRT_DIRECTORY: /srv/certs/crt | ||||||
|  |     volumes: | ||||||
|  |       - certstaging:/srv/certs | ||||||
|  |       - signersockets:/srv/sockets | ||||||
|  |     depends_on: | ||||||
|  |       - db | ||||||
|  |   signer: | ||||||
|  |     build: | ||||||
|  |       context: . | ||||||
|  |       dockerfile: signer.Dockerfile | ||||||
|  |     environment: | ||||||
|  |       SIGNER_WORKDIR: /srv/ca/work | ||||||
|  |       SIGNER_CA_CONFIG: /srv/caconfig | ||||||
|  |     volumes: | ||||||
|  |       - signersockets:/srv/sockets | ||||||
|  |       - signerdata:/srv/ca | ||||||
| 
 | 
 | ||||||
| volumes: | volumes: | ||||||
|   db: { } |   db: { } | ||||||
|   maildir: { } |   maildir: { } | ||||||
|  |   certstaging: { } | ||||||
|  |   signersockets: { } | ||||||
|  |   signerdata: { } | ||||||
							
								
								
									
										14
									
								
								docker/run-signer
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								docker/run-signer
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,14 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | set -eu | ||||||
|  | 
 | ||||||
|  | rm -f /srv/sockets/signer | ||||||
|  | socat -d -d PTY,link=/dev/ttyUSB0 UNIX-LISTEN:/srv/sockets/signer 2>&1 & | ||||||
|  | sleep 1 | ||||||
|  | 
 | ||||||
|  | export SERIAL_PORT=/dev/ttyUSB0 | ||||||
|  | 
 | ||||||
|  | cd /srv/CommModule/ | ||||||
|  | 
 | ||||||
|  | touch server.pl-active | ||||||
|  | exec perl -w server.pl | ||||||
							
								
								
									
										13
									
								
								docker/run-signer_client
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								docker/run-signer_client
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | set -eu | ||||||
|  | 
 | ||||||
|  | socat -d -d UNIX:/srv/sockets/signer PTY,link=/dev/ttyS0 2>&1 & | ||||||
|  | sleep 1 | ||||||
|  | 
 | ||||||
|  | export SERIAL_PORT=/dev/ttyS0 | ||||||
|  | 
 | ||||||
|  | cd /srv/CommModule/ | ||||||
|  | 
 | ||||||
|  | touch client.pl-active | ||||||
|  | exec perl -w client.pl | ||||||
							
								
								
									
										39
									
								
								docker/signer-config/class3-client.cnf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								docker/signer-config/class3-client.cnf
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | ||||||
|  | [ ca ] | ||||||
|  | default_ca             = CA_default         # The default ca section | ||||||
|  | 
 | ||||||
|  | [ CA_default ] | ||||||
|  | dir                    = /srv/ca/class3      # Where everything is kept | ||||||
|  | certs                  = $dir/certs          # Where the issued certs are kept | ||||||
|  | crl_dir                = $dir/crl            # Where the issued crl are kept | ||||||
|  | crlnumber              = $dir/crlnumber      # bug-1438 | ||||||
|  | database               = $dir/index.txt      # database index file. | ||||||
|  | new_certs_dir          = $dir/newcerts       # default place for new certs. | ||||||
|  | certificate            = $dir/ca.crt.pem     # The CA certificate | ||||||
|  | serial                 = $dir/serial         # The current serial number | ||||||
|  | crl                    = $dir/crl.pem        # The current CRL | ||||||
|  | private_key            = $dir/ca.key.pem     # The private key | ||||||
|  | RANDFILE               = $dir/private/.rand  # private random number file | ||||||
|  | x509_extensions        = usr_cert            # The extentions to add to the cert | ||||||
|  | default_days           = 200                 # how long to certify for | ||||||
|  | default_crl_days       = 30                  # how long before next CRL | ||||||
|  | default_md             = sha512              # which md to use. | ||||||
|  | preserve               = no                  # keep passed DN ordering | ||||||
|  | policy                 = policy_anything | ||||||
|  | 
 | ||||||
|  | [ policy_anything ] | ||||||
|  | countryName            = optional | ||||||
|  | stateOrProvinceName    = optional | ||||||
|  | localityName           = optional | ||||||
|  | organizationName       = optional | ||||||
|  | organizationalUnitName = optional | ||||||
|  | commonName             = optional | ||||||
|  | emailAddress           = optional | ||||||
|  | 
 | ||||||
|  | [ usr_cert ] | ||||||
|  | basicConstraints       = critical, CA:FALSE | ||||||
|  | nsComment              = "To get your own certificate for FREE head over to http://www.CAcert.org" | ||||||
|  | keyUsage               = critical, digitalSignature, keyEncipherment, keyAgreement | ||||||
|  | extendedKeyUsage       = emailProtection, clientAuth, msEFS, msSGC, nsSGC | ||||||
|  | authorityInfoAccess    = OCSP;URI:http://ocsp.cacert.org | ||||||
|  | crlDistributionPoints  = URI:http://crl.cacert.localhost/class3-revoke.crl | ||||||
|  | subjectAltName         = email:copy | ||||||
							
								
								
									
										39
									
								
								docker/signer-config/openssl-client.cnf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								docker/signer-config/openssl-client.cnf
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | ||||||
|  | [ ca ] | ||||||
|  | default_ca             = CA_default         # The default ca section | ||||||
|  | 
 | ||||||
|  | [ CA_default ] | ||||||
|  | dir                    = /srv/ca/CA          # Where everything is kept | ||||||
|  | certs                  = $dir/certs          # Where the issued certs are kept | ||||||
|  | crl_dir                = $dir/crl            # Where the issued crl are kept | ||||||
|  | crlnumber              = $dir/crlnumber      # bug-1438 | ||||||
|  | database               = $dir/index.txt      # database index file. | ||||||
|  | new_certs_dir          = $dir/newcerts       # default place for new certs. | ||||||
|  | certificate            = $dir/ca.crt.pem     # The CA certificate | ||||||
|  | serial                 = $dir/serial         # The current serial number | ||||||
|  | crl                    = $dir/crl.pem        # The current CRL | ||||||
|  | private_key            = $dir/ca.key.pem     # The private key | ||||||
|  | RANDFILE               = $dir/private/.rand  # private random number file | ||||||
|  | x509_extensions        = usr_cert            # The extentions to add to the cert | ||||||
|  | default_days           = 200                 # how long to certify for | ||||||
|  | default_crl_days       = 30                  # how long before next CRL | ||||||
|  | default_md             = sha512              # which md to use. | ||||||
|  | preserve               = no                  # keep passed DN ordering | ||||||
|  | policy                 = policy_anything | ||||||
|  | 
 | ||||||
|  | [ policy_anything ] | ||||||
|  | countryName            = optional | ||||||
|  | stateOrProvinceName    = optional | ||||||
|  | localityName           = optional | ||||||
|  | organizationName       = optional | ||||||
|  | organizationalUnitName = optional | ||||||
|  | commonName             = optional | ||||||
|  | emailAddress           = optional | ||||||
|  | 
 | ||||||
|  | [ usr_cert ] | ||||||
|  | basicConstraints       = critical, CA:FALSE | ||||||
|  | nsComment              = "To get your own certificate for FREE head over to http://www.CAcert.org" | ||||||
|  | keyUsage               = critical, digitalSignature, keyEncipherment, keyAgreement | ||||||
|  | extendedKeyUsage       = emailProtection, clientAuth, msEFS, msSGC, nsSGC | ||||||
|  | authorityInfoAccess    = OCSP;URI:http://ocsp.cacert.org | ||||||
|  | crlDistributionPoints  = URI:http://crl.cacert.localhost/revoke.crl | ||||||
|  | subjectAltName         = email:copy | ||||||
							
								
								
									
										24
									
								
								signer.Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								signer.Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | FROM debian:jessie | ||||||
|  | 
 | ||||||
|  | RUN apt-get update \ | ||||||
|  |     && DEBIAN_FRONTEND=noninteractive \ | ||||||
|  |     apt-get install -y --no-install-recommends \ | ||||||
|  |     gnupg \ | ||||||
|  |     libdevice-serialport-perl \ | ||||||
|  |     libdigest-sha-perl \ | ||||||
|  |     libfile-counterfile-perl \ | ||||||
|  |     openssl \ | ||||||
|  |     perl \ | ||||||
|  |     socat \ | ||||||
|  |     && apt-get clean \ | ||||||
|  |     && rm -rf /var/lib/apt/lists/* | ||||||
|  | 
 | ||||||
|  | VOLUME /srv/ca | ||||||
|  | 
 | ||||||
|  | COPY cacert-software/CommModule/server.pl \ | ||||||
|  |      cacert-software/CommModule/logclean.sh \ | ||||||
|  |      /srv/CommModule/ | ||||||
|  | COPY docker/run-signer usr/local/bin/ | ||||||
|  | COPY docker/signer-config/* /srv/caconfig/ | ||||||
|  | 
 | ||||||
|  | CMD ["/usr/local/bin/run-signer"] | ||||||
							
								
								
									
										26
									
								
								signer_client.Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								signer_client.Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | ||||||
|  | FROM debian:jessie | ||||||
|  | 
 | ||||||
|  | RUN apt-get update \ | ||||||
|  |     && DEBIAN_FRONTEND=noninteractive \ | ||||||
|  |     apt-get install -y --no-install-recommends \ | ||||||
|  |     gnupg \ | ||||||
|  |     libdbd-mysql-perl \ | ||||||
|  |     libdbi-perl \ | ||||||
|  |     libdevice-serialport-perl \ | ||||||
|  |     libfile-counterfile-perl \ | ||||||
|  |     openssl \ | ||||||
|  |     perl \ | ||||||
|  |     socat \ | ||||||
|  |     && apt-get clean \ | ||||||
|  |     && rm -rf /var/lib/apt/lists/* | ||||||
|  | 
 | ||||||
|  | VOLUME /srv/certs | ||||||
|  | 
 | ||||||
|  | COPY cacert-software/CommModule/client.pl \ | ||||||
|  |      cacert-software/CommModule/logclean.sh \ | ||||||
|  |      /srv/CommModule/ | ||||||
|  | COPY docker/run-signer_client usr/local/bin/ | ||||||
|  | 
 | ||||||
|  | WORKDIR /srv/CommModule | ||||||
|  | 
 | ||||||
|  | CMD ["run-signer_client"] | ||||||
|  | @ -52,6 +52,7 @@ COPY docker/php5-cacert.ini /etc/php5/mods-available/cacert.ini | ||||||
| COPY docker/feed.rss /usr/local/etc/application/feed.rss | COPY docker/feed.rss /usr/local/etc/application/feed.rss | ||||||
| 
 | 
 | ||||||
| VOLUME /www | VOLUME /www | ||||||
|  | VOLUME /certs | ||||||
| 
 | 
 | ||||||
| RUN a2ensite www.cacert.localhost ; \ | RUN a2ensite www.cacert.localhost ; \ | ||||||
|     a2dissite 000-default ; \ |     a2dissite 000-default ; \ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue