design: use HTTPS protocol and fix 404 errors

Change-Id: Ib56b920b3f809d9e9039413b8c16a88866f6fe02
Reviewed-on: https://go-review.googlesource.com/118195
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/design/11502-securitypolicy.md b/design/11502-securitypolicy.md
index e77d0fe..01eb30e 100644
--- a/design/11502-securitypolicy.md
+++ b/design/11502-securitypolicy.md
@@ -18,7 +18,7 @@
 ## Background
 
 The Go standard library includes a complete, modern [cryptography
-package](http://golang.org/pkg/crypto/). Since the initial release of Go,
+package](https://golang.org/pkg/crypto/). Since the initial release of Go,
 there has a single documented security vulnerability [CVE-2014-7189]
 (https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7189) in the crypto
 package. This is a promising track record, but as Go usage increases the
@@ -34,9 +34,9 @@
 
 * [Python Security Policy](https://www.python.org/news/security/)
 * [Ruby on Rails Security Policy](http://rubyonrails.org/security/)
-* [Rust Security Policy](http://www.rust-lang.org/security.html)
+* [Rust Security Policy](https://www.rust-lang.org/security.html)
 * [Webkit Security Policy](https://www.webkit.org/security/)
-* [Xen Project Security Policy](http://www.xenproject.org/security-policy.html)
+* [Xen Project Security Policy](https://www.xenproject.org/security-policy.html)
 
 These policies differ in various aspects, but in general there is a common set
 of guidelines that are typically established:
@@ -57,7 +57,7 @@
 ## Proposal
 
 Among the existing security policies reviewed, the [Rust
-policy](http://www.rust-lang.org/security.html) is considered a good starting
+policy](https://www.rust-lang.org/security.html) is considered a good starting
 point. Once adopted, this policy will be hosted at
 [https://golang.org/security](https://golang.org/security). The details of the
 policy are in the Implementation section below.
diff --git a/design/12302-release-proposal.md b/design/12302-release-proposal.md
index 13344b7..711768d 100644
--- a/design/12302-release-proposal.md
+++ b/design/12302-release-proposal.md
@@ -43,7 +43,7 @@
 ### Release process
 
 This proposal recommends that repository owners adopt the
-[Semantic Versioning 2.0 standard](http://SemVer.org/spec/v2.0.0.html) (SemVer)
+[Semantic Versioning 2.0 standard](https://SemVer.org/spec/v2.0.0.html) (SemVer)
 for their numbering scheme.
 
 Source code is released by tagging (eg. `git tag`) the VCS repository with a
@@ -59,7 +59,7 @@
 v<SemVer>
 ```
 That is, the character `v`, U+0075, followed directly by a string which is
-compliant with the [Semantic Versioning 2.0 standard](http://SemVer.org/spec/v2.0.0.html).
+compliant with the [Semantic Versioning 2.0 standard](https://SemVer.org/spec/v2.0.0.html).
 
 When inspecting a repository, tags which do not fit the format described above
 must be ignored for the purpose of determining the available release versions.
diff --git a/design/15292-generics.md b/design/15292-generics.md
index 07028e7..db8bae0 100644
--- a/design/15292-generics.md
+++ b/design/15292-generics.md
@@ -16,7 +16,7 @@
 (such as types) factored out.
 It means the ability to express algorithms with minimal assumptions
 about data structures, and vice-versa
-(paraphrasing [Jazayeri, et al](http://www.dagstuhl.de/en/program/calendar/semhp/?semnr=98171)).
+(paraphrasing [Jazayeri, et al](https://www.dagstuhl.de/en/program/calendar/semhp/?semnr=98171)).
 
 ## Background
 
@@ -139,7 +139,7 @@
 wide-ranging and sometimes surprising effects, as in incomprehensible
 C++ error messages.
 
-As [Russ pointed out](http://research.swtch.com/generic), generics are
+As [Russ pointed out](https://research.swtch.com/generic), generics are
 a trade off between programmer time, compilation time, and execution
 time.
 
@@ -210,7 +210,7 @@
 * Channel operations
   * Merge N channels onto one
   * Multiplex one channel onto N
-  * The [worker-pool pattern](http://play.golang.org/p/b5XRHnxzZF)
+  * The [worker-pool pattern](https://play.golang.org/p/b5XRHnxzZF)
 * Graph algorithms, for example immediate dominator computation
 * Multi-dimensional arrays (not slices) of different lengths
 * Many of the packages in go.text could benefit from it to avoid duplicate
diff --git a/design/15292/2011-03-gen.md b/design/15292/2011-03-gen.md
index cd5a0f0..d8e9787 100644
--- a/design/15292/2011-03-gen.md
+++ b/design/15292/2011-03-gen.md
@@ -16,7 +16,7 @@
 These type parameters may then be used in other declarations,
 producing generalized types and functions.
 
-Some goals, borrowed from [Garcia et al](http://www.crest.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf):
+Some goals, borrowed from [Garcia et al](https://web.archive.org/web/20170812055356/http://www.crest.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf):
 
 * Do not require an explicit relationship between a definition of a generalized function and its use. The function should be callable with any type that fits the required form.
 * Permit interfaces to express relationships between types of methods, as in a comparison function that takes two parameters of the same unknown type.
diff --git a/design/15292/2013-10-gen.md b/design/15292/2013-10-gen.md
index ff6bec9..f0e7587 100644
--- a/design/15292/2013-10-gen.md
+++ b/design/15292/2013-10-gen.md
@@ -15,7 +15,7 @@
 These type parameters may then be used in other declarations,
 producing generalized types and functions.
 
-Some goals, borrowed from [Garcia et al](http://www.crest.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf):
+Some goals, borrowed from [Garcia et al](https://web.archive.org/web/20170812055356/http://www.crest.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf):
 
 * Do not require an explicit relationship between a definition of a generalized function and its use. The function should be callable with any suitable type.
 * Permit interfaces to express relationships between types of methods, as in a comparison function that takes two parameters of the same unknown type.
diff --git a/design/15292/2013-12-type-params.md b/design/15292/2013-12-type-params.md
index 1a58320..0eb09ad 100644
--- a/design/15292/2013-12-type-params.md
+++ b/design/15292/2013-12-type-params.md
@@ -15,7 +15,7 @@
 Types and functions that use parameters are called parameterized, as
 in "a parameterized function."
 
-Some goals, borrowed from [Garcia et al](http://www.crest.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf):
+Some goals, borrowed from [Garcia et al](https://web.archive.org/web/20170812055356/http://www.crest.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf):
 
 * Do not require an explicit relationship between a definition of a parameterized function and its use. The function should be callable with any suitable type.
 * Permit interfaces to express relationships between types of methods, as in a comparison method that takes two values of the same parameterized type.
diff --git a/design/15292/2016-09-compile-time-functions.md b/design/15292/2016-09-compile-time-functions.md
index 7fa9443..cb99332 100644
--- a/design/15292/2016-09-compile-time-functions.md
+++ b/design/15292/2016-09-compile-time-functions.md
@@ -166,7 +166,7 @@
 `gotype` expressions within type and method declarations are only evaluated if
 the block containing the type declaration is evaluated.
 (This is analogous to the
-[SFINAE rule in C++](http://en.cppreference.com/w/cpp/language/sfinae).)
+[SFINAE rule in C++](https://en.cppreference.com/w/cpp/language/sfinae).)
 
 A [`TypeSwitchStmt`](https://golang.org/ref/spec#TypeSwitchStmt) on an
 expression or variable of type `gotype` switches on the concrete type
diff --git a/design/18130-type-alias.md b/design/18130-type-alias.md
index 851022a..3552cc9 100644
--- a/design/18130-type-alias.md
+++ b/design/18130-type-alias.md
@@ -124,7 +124,7 @@
 
 The question of the meaning of an embedded type alias was identified as [issue 17746](https://github.com/golang/go/issues/17746), during the exploration of general aliases. The rationale for the decision above is given inline with the decision. A key property is that it matches the current handling of byte and rune, so that the language need not have two different classes of type alias (predefined vs user-defined) with different semantics.
 
-The syntax and distinction between type declarations and type alias declarations ends up being nearly identical to that of [Pascal](http://www.freepascal.org/docs-html/ref/refse19.html). The alias syntax itself is also the same as in later languages like [Rust](https://doc.rust-lang.org/book/type-aliases.html).
+The syntax and distinction between type declarations and type alias declarations ends up being nearly identical to that of [Pascal](https://www.freepascal.org/docs-html/ref/refse19.html). The alias syntax itself is also the same as in later languages like [Rust](https://doc.rust-lang.org/book/type-aliases.html).
 
 ## Compatibility