Continuos Deployment

David Cramer’s talk at PyCON 2012 was really good and the continuos deployment (CD) process at Disqus looks awesome.

For the Disqus’s team CD is shipping new code as soon as it is ready. It does not mean to deploy all the time but as much as you want.

It goes something like this:

  • Commit
  • Integrate
    If it fails come back to fix it and commit it again.
  • Deploy
  • Report

Similar Presentation in 2011: http://www.slideshare.net/zeeg/pitfalls-of-continuous-deployment
Blog: http://justcramer.com/

Create a Certificate Authority and Certificates with OpenSSL

Note: This is a recipe to help me next time I need to create a CA

  • Install OpenSSL: sudo apt-get install openssl
  • Create folders certs, conf and private wherever you are gonna have your CA
  • Create a database to keep track of the certificates that you issue [echo '01' >serial ; touch index.txt]
  • Create the configuration file in conf/caconfig.cnf
#
# OpenSSL configuration file.
#
# Establish working directory.

dir = /the_directory_where_you_save_the_ca_files					= .

[ ca ]
default_ca				= CA_default

[ CA_default ]
serial					= $dir/serial
database				= $dir/certindex.txt
new_certs_dir				= $dir/certs
certificate				= $dir/cacert.pem
private_key				= $dir/private/cakey.pem
default_days				= 365
default_md				= md5
preserve				= no
email_in_dn				= no
nameopt					= default_ca
certopt					= default_ca
policy					= policy_match

[ policy_match ]
countryName				= match
stateOrProvinceName			= match
organizationName			= match
organizationalUnitName			= optional
commonName				= supplied
emailAddress				= optional

[ req ]
default_bits				= 1024			# Size of keys
default_keyfile				= key.pem		# name of generated keys
default_md				= md5				# message digest algorithm
string_mask				= nombstr		# permitted characters
distinguished_name			= req_distinguished_name
req_extensions				= v3_req

[ req_distinguished_name ]
# Variable name				Prompt string
#-------------------------	  ----------------------------------
0.organizationName			= Organization Name (company)
organizationalUnitName			= Organizational Unit Name (department, division)
emailAddress				= Email Address
emailAddress_max			= 40
localityName				= Locality Name (city, district)
stateOrProvinceName			= State or Province Name (full name)
countryName				= Country Name (2 letter code)
countryName_min				= 2
countryName_max				= 2
commonName				= Common Name (hostname, IP, or your name)
commonName_max				= 64

# Default values for the above, for consistency and less typing.
# Variable name				Value
#------------------------	  ------------------------------
0.organizationName_default		= My Company
localityName_default			= My Town
stateOrProvinceName_default		= State or Providence
countryName_default			= US

[ v3_ca ]
basicConstraints			= CA:TRUE
subjectKeyIdentifier			= hash
authorityKeyIdentifier			= keyid:always,issuer:always

[ v3_req ]
basicConstraints			= CA:FALSE
subjectKeyIdentifier			= hash
  • Generate CA Key and Certificate [openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 365 -config conf/caconfig.cnf]
References