Skip to content

Commit 57b9863

Browse files
authored
Merge pull request #177 from OpenVoxProject/background_ssl
Update background/ssl
2 parents 852337e + 612be41 commit 57b9863

7 files changed

Lines changed: 284 additions & 188 deletions

File tree

docs/background/index.markdown

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ toc: false
55
---
66

77

8-
This page collects information about foundational technologies and practices. These are not tied to any specific Puppet product, but we believe many of our users will either need to or want to be familiar with them.
9-
8+
This page collects information about foundational technologies and practices.
9+
These are not tied to any specific OpenVox product, but we believe many of our users will either need to or want to be familiar with them.
1010

1111
## [SSL and Related Topics](./ssl/)
1212

13-
Puppet relies on HTTPS to secure its communications and identify nodes. Using it effectively requires familiarity with concepts like certificates and public key cryptography, which can sometimes present a steep learning curve for new Puppet users.
13+
OpenVox relies on HTTPS to secure its communications and identify nodes.
14+
Using it effectively requires familiarity with concepts like certificates and public key cryptography, which can sometimes present a steep learning curve for new OpenVox users.
1415

15-
This series of articles explains the foundations of Puppet's security model, which is also used by many other systems across the internet.
16+
This series of articles explains the foundations of OpenVox's security model, which is also used by many other systems across the internet.
1617

1718
- [Index](./ssl/index.html)
1819
- [What is Public Key Cryptography?](./ssl/public_key.html)
1920
- [What are Certificates and PKI?](./ssl/certificates_pki.html)
2021
- [What is TLS/SSL?](./ssl/tls_ssl.html)
2122
- [What is HTTPS?](./ssl/https.html)
2223
- [Appendix: Anatomy of a Certificate](./ssl/cert_anatomy.html)
23-

docs/background/ssl/cert_anatomy.markdown

Lines changed: 99 additions & 54 deletions
Large diffs are not rendered by default.

docs/background/ssl/certificates_pki.markdown

Lines changed: 87 additions & 51 deletions
Large diffs are not rendered by default.

docs/background/ssl/https.markdown

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ layout: default
33
title: "Background Reference: What is HTTPS?"
44
---
55

6-
76
[index]: ./index.html
87
[tls_ssl]: ./tls_ssl.html
98
[certificate_anatomy]: ./cert_anatomy.html
@@ -12,71 +11,69 @@ title: "Background Reference: What is HTTPS?"
1211
1312
Since SSL is a relatively generic protocol, it is usually used to wrap a more specific protocol, like HTTP or SMTP.
1413

15-
HTTPS is the standard HTTP protocol wrapped with SSL --- an SSL connection is established as described in the previous article, then the client sends normal HTTP requests to the server over the secure channel. When the server responds, it also uses the secure channel.
14+
HTTPS is the standard HTTP protocol wrapped with SSL --- an SSL connection is established as described in the previous article, then the client sends normal HTTP requests to the server over the secure channel.
15+
When the server responds, it also uses the secure channel.
1616

1717
The entire HTTP protocol is wrapped, including headers; this means that even URLs, parameters, and POST data will be encrypted.
1818

19-
HTTPS and Puppet
20-
-----
19+
## HTTPS and OpenVox
2120

22-
Puppet uses HTTPS for all of its traffic; puppet agent nodes act as clients and request their catalogs from the puppet master server.
21+
OpenVox uses HTTPS for all of its traffic; OpenVox agent nodes act as clients and request their catalogs from the OpenVox server.
2322

24-
Since Puppet uses HTTPS, it requires a certificate-based PKI, which in turn requires public key cryptography. (Hence the prior articles in this series.)
23+
Since OpenVox uses HTTPS, it requires a certificate-based PKI, which in turn requires public key cryptography. (Hence the prior articles in this series.)
2524

2625
### Client Authentication
2726

28-
Most of Puppet's HTTP endpoints require client authentication, so the puppet master can ensure nodes are authorized before serving configuration catalogs.
27+
Most of OpenVox's HTTP endpoints require client authentication, so the OpenVox server can ensure nodes are authorized before serving configuration catalogs.
2928

30-
This means that both puppet master servers and puppet agent nodes must have their own certificates.
29+
This means that both OpenVox servers and OpenVOx agent nodes must have their own certificates.
3130

3231
However, certain endpoints can be used without client authentication, mostly so that new nodes can retrieve a copy of the CA certificate, submit CSRs, and retrieve their signed certificates.
3332

34-
Ports
35-
-----
33+
### Ports
3634

3735
Technically, any port can be used to serve HTTPS. On the web, the usual convention is port 443.
3836

39-
Puppet usually uses port 8140 instead, since its traffic doesn't really resemble web traffic.
37+
OpenVox usually uses port 8140 instead, since its traffic doesn't really resemble web traffic.
4038

41-
Persistence of SSL/Certificate Data in HTTPS Applications
42-
-----
39+
### Persistence of SSL/Certificate Data in HTTPS Applications
4340

44-
Since the entire HTTP protocol passes through the secure channel established by the SSL connection, the HTTP server and client don't have any direct involvement with the connection or the certificates. Likewise, any application logic will be several levels removed from the SSL details.
41+
Since the entire HTTP protocol passes through the secure channel established by the SSL connection, the HTTP server and client don't have any direct involvement with the connection or the certificates.
42+
Likewise, any application logic will be several levels removed from the SSL details.
4543

4644
In practice, though, other levels of an application will usually want access to some SSL-related information:
4745

48-
* The client application usually wants to examine the certificate metadata after the connection is established, since the server's identity and permissions are relevant to application-level authorization decisions. (For example, a user could check the identity of a server before deciding whether to enter sensitive information into a web form.)
46+
* The client application usually wants to examine the certificate metadata after the connection is established, since the server's identity and permissions are relevant to application-level authorization decisions.
47+
(For example, a user could check the identity of a server before deciding whether to enter sensitive information into a web form.)
4948
* If client authentication is enabled, the server application will want to know whether the authentication succeeded, and will want to examine the results.
5049

5150
Thus, most SSL implementations have some means to publish connection and certificate data, so it can be used by higher layers of the protocol stack.
5251

53-
An example of this is Apache's `mod_ssl` module. If it's [configured with the `StdEnvVars` option](http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#envvars), it will publish extensive SSL and certificate information as environment variables with predictable names. These variables can then be used by Apache itself, or by any application being spawned and managed by another Apache module (e.g. `mod_cgi`, `mod_passenger`, or `mod_php`).
52+
An example of this is Apache's `mod_ssl` module. If it's [configured with the `StdEnvVars` option](http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#envvars),
53+
it will publish extensive SSL and certificate information as environment variables with predictable names.
54+
These variables can then be used by Apache itself, or by any application being spawned and managed by another Apache module (e.g. `mod_cgi`, `mod_passenger`, or `mod_php`).
5455

55-
SSL Termination and Proxying
56-
-----
56+
### SSL Termination and Proxying
5757

58-
Large server-side HTTPS applications often need to be split into multiple semi-independent components or services, in order to accommodate better resiliency or performance. SSL is often the first component to go; even in cases where most of the application runs as a single process, SSL is computationally expensive enough to be worth splitting out.
58+
Large server-side HTTPS applications often need to be split into multiple semi-independent components or services, in order to accommodate better resiliency or performance.
59+
SSL is often the first component to go; even in cases where most of the application runs as a single process, SSL is computationally expensive enough to be worth splitting out.
5960

60-
A single component that handles SSL in a service-oriented-architecture is called an _SSL terminating proxy._ SSL proxies work under basically the same requirements as the SSL component of a purely local application stack --- they must validate certificates and provide a secure channel, and they may need to publish connection and certificate information for use by other components of the stack. They also introduce one additional requirement: the network between the proxy and the application server must be very secure, as sensitive information will be passing along it in cleartext.
61+
A single component that handles SSL in a service-oriented-architecture is called an _SSL terminating proxy_.
62+
SSL proxies work under basically the same requirements as the SSL component of a purely local application stack.
63+
They must validate certificates and provide a secure channel, and they may need to publish connection and certificate information for use by other components of the stack.
64+
They also introduce one additional requirement: the network between the proxy and the application server must be very secure, as sensitive information will be passing along it in cleartext.
6165

6266
[ssl_terminating_proxy]: ./images/ssl_terminating_proxy.png
6367

6468
![A drawing of an SSL terminating proxy removing SSL and sending a second unencrypted HTTP request with certificate data embedded in the headers.][ssl_terminating_proxy]
6569

66-
SSL terminating proxies work by handling the incoming connection, then sending a second unencrypted HTTP request to the real application server. When the proxy receives a reply, it will forward it to the client along the original secure connection.
70+
SSL terminating proxies work by handling the incoming connection, then sending a second unencrypted HTTP request to the real application server.
71+
When the proxy receives a reply, it will forward it to the client along the original secure connection.
6772

6873
If the application needs any SSL or certificate data, the proxy can be configured to publish it by inserting the data into the HTTP headers of the request it sends to the backend application server.
6974

70-
An example of this is a puppet master running with the Nginx + Unicorn stack:
71-
72-
* Nginx terminates SSL, and inserts the SSL client authentication status and client certificate DN into the HTTP headers of a new request. It sends this request to the Unicorn workers.
73-
* A Unicorn worker receives the unencrypted request, and, according to the common gateway interface (CGI) standard, publishes all HTTP header information as CGI variables, including the SSL information inserted by Nginx. It uses the Rack interface to translate the HTTP request into a request to the puppet master application.
74-
* The puppet master application reads SSL information from pre-arranged environment variables, and uses its auth.conf configuration to decide whether to serve the request. If yes, it uses its own application logic to decide what the request should be. Any response passes back through the Unicorn worker and Nginx to make its way to the puppet agent client.
75-
76-
77-
End of Series
78-
-----
75+
## End of Series
7976

80-
At this point, you should understand enough about the fundamentals to understand any documentation on this site about managing Puppet's certificates, CA, and HTTPS authorization tools.
77+
At this point, you should understand enough about the fundamentals to understand any documentation on this site about managing OpenVox's certificates, CA, and HTTPS authorization tools.
8178

8279
For a little more practical depth, you may also want to see the [appendix on certificate anatomy.][certificate_anatomy]

docs/background/ssl/index.markdown

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ toc: false
77
[wiki_pki]: http://en.wikipedia.org/wiki/Public_key_infrastructure
88
[wiki_tls]: http://en.wikipedia.org/wiki/Transport_Layer_Security
99

10-
Puppet's network communications and security are all based on HTTPS, which secures traffic using X.509 certificates. It includes its own CA tools to provide PKI functionality to the whole deployment, although an existing CA can also be used.
10+
OpenVox's network communications and security are all based on HTTPS, which secures traffic using X.509 certificates.
11+
It includes its own CA tools to provide PKI functionality to the whole deployment, although an existing CA can also be used.
1112

12-
These tools and protocols can sometimes present a steep learning curve for new Puppet users. This series provides background knowledge about how SSL and certificates work, and is aimed at giving new Puppet users enough fluency with these concepts to read and understand the rest of the SSL documentation on this site.
13+
These tools and protocols can sometimes present a steep learning curve for new OpenVox users.
14+
This series provides background knowledge about how SSL and certificates work,
15+
and is aimed at giving new OpenVox users enough fluency with these concepts to read and understand the rest of the SSL documentation on this site.
1316

14-
> **A note about depth:** This background information is vastly simplified and glosses over a great many implementation details; its goal is basic competency, not expertise. But if you're interested in learning more, it should provide enough context and vocabulary to research these topics in more depth. (The Wikipedia pages on [PKI][wiki_pki] and [TLS/SSL][wiki_tls] may be a good starting place; after that, we recommend hitting the library or your local technical book store.)
17+
> **A note about depth:** This background information is vastly simplified and glosses over a great many implementation details; its goal is basic competency, not expertise.
18+
> But if you're interested in learning more, it should provide enough context and vocabulary to research these topics in more depth.
19+
> (The Wikipedia pages on [PKI][wiki_pki] and [TLS/SSL][wiki_tls] may be a good starting place; after that, we recommend hitting the library or your local technical book store.)
1520
16-
Table of Contents
17-
-----
21+
## Table of Contents
1822

1923
We recommend reading these articles in order, as each one lays foundations for the next.
2024

@@ -24,17 +28,19 @@ Public key crypto is a family of tools for encrypting and verifying information.
2428

2529
[**What are Certificates and PKI?**](./certificates_pki.html)
2630

27-
A PKI is a way to associate public keys with trusted information about their owners, using documents called certificates. This slightly longer article explains how that trust works, and what pieces have to come together before a certificate can exist.
31+
A PKI is a way to associate public keys with trusted information about their owners, using documents called certificates.
32+
This slightly longer article explains how that trust works, and what pieces have to come together before a certificate can exist.
2833

2934
[**What is TLS/SSL?**](./tls_ssl.html)
3035

31-
Certificates can be used to create secure _and_ authenticated channels of communication over a network. You've probably already used one of those channels today. This article explains this practical use for certificates, and the benefits it provides.
36+
Certificates can be used to create secure _and_ authenticated channels of communication over a network. You've probably already used one of those channels today.
37+
This article explains this practical use for certificates, and the benefits it provides.
3238

3339
[**What is HTTPS?**](./https.html)
3440

35-
HTTP is a useful protocol for building applications, and it can be tunneled over TLS/SSL. This article explains how that works. It also explains how other parts of an HTTP-based application can gain access to certificate information and use it to authorize participants.
41+
HTTP is a useful protocol for building applications, and it can be tunneled over TLS/SSL. This article explains how that works.
42+
It also explains how other parts of an HTTP-based application can gain access to certificate information and use it to authorize participants.
3643

3744
[**Appendix: Anatomy of a Certificate**](./cert_anatomy.html)
3845

3946
This page shows several example certificates and points out their most important features, in order to highlight the lessons covered in the previous articles.
40-

0 commit comments

Comments
 (0)