You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/background/index.markdown
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,19 +5,19 @@ toc: false
5
5
---
6
6
7
7
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.
10
10
11
11
## [SSL and Related Topics](./ssl/)
12
12
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.
14
15
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.
16
17
17
18
-[Index](./ssl/index.html)
18
19
-[What is Public Key Cryptography?](./ssl/public_key.html)
19
20
-[What are Certificates and PKI?](./ssl/certificates_pki.html)
20
21
-[What is TLS/SSL?](./ssl/tls_ssl.html)
21
22
-[What is HTTPS?](./ssl/https.html)
22
23
-[Appendix: Anatomy of a Certificate](./ssl/cert_anatomy.html)
Copy file name to clipboardExpand all lines: docs/background/ssl/https.markdown
+28-31Lines changed: 28 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,6 @@ layout: default
3
3
title: "Background Reference: What is HTTPS?"
4
4
---
5
5
6
-
7
6
[index]: ./index.html
8
7
[tls_ssl]: ./tls_ssl.html
9
8
[certificate_anatomy]: ./cert_anatomy.html
@@ -12,71 +11,69 @@ title: "Background Reference: What is HTTPS?"
12
11
13
12
Since SSL is a relatively generic protocol, it is usually used to wrap a more specific protocol, like HTTP or SMTP.
14
13
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.
16
16
17
17
The entire HTTP protocol is wrapped, including headers; this means that even URLs, parameters, and POST data will be encrypted.
18
18
19
-
HTTPS and Puppet
20
-
-----
19
+
## HTTPS and OpenVox
21
20
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.
23
22
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.)
25
24
26
25
### Client Authentication
27
26
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.
29
28
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.
31
30
32
31
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.
33
32
34
-
Ports
35
-
-----
33
+
### Ports
36
34
37
35
Technically, any port can be used to serve HTTPS. On the web, the usual convention is port 443.
38
36
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.
40
38
41
-
Persistence of SSL/Certificate Data in HTTPS Applications
42
-
-----
39
+
### Persistence of SSL/Certificate Data in HTTPS Applications
43
40
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.
45
43
46
44
In practice, though, other levels of an application will usually want access to some SSL-related information:
47
45
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.)
49
48
* If client authentication is enabled, the server application will want to know whether the authentication succeeded, and will want to examine the results.
50
49
51
50
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.
52
51
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`).
54
55
55
-
SSL Termination and Proxying
56
-
-----
56
+
### SSL Termination and Proxying
57
57
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.
59
60
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.
![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]
65
69
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.
67
72
68
73
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.
69
74
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
79
76
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.
81
78
82
79
For a little more practical depth, you may also want to see the [appendix on certificate anatomy.][certificate_anatomy]
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.
11
12
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.
13
16
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.)
15
20
16
-
Table of Contents
17
-
-----
21
+
## Table of Contents
18
22
19
23
We recommend reading these articles in order, as each one lays foundations for the next.
20
24
@@ -24,17 +28,19 @@ Public key crypto is a family of tools for encrypting and verifying information.
24
28
25
29
[**What are Certificates and PKI?**](./certificates_pki.html)
26
30
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.
28
33
29
34
[**What is TLS/SSL?**](./tls_ssl.html)
30
35
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.
32
38
33
39
[**What is HTTPS?**](./https.html)
34
40
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.
36
43
37
44
[**Appendix: Anatomy of a Certificate**](./cert_anatomy.html)
38
45
39
46
This page shows several example certificates and points out their most important features, in order to highlight the lessons covered in the previous articles.
0 commit comments