@fredlackey/devutils 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
|
@@ -0,0 +1,937 @@
|
|
|
1
|
+
# Installing CA Certificates
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
CA certificates (Certificate Authority certificates) are digital certificates that establish a chain of trust for SSL/TLS connections. They are used by web browsers, command-line tools like cURL and wget, programming languages, and other applications to verify that secure connections to remote servers are legitimate and not being intercepted by malicious actors.
|
|
6
|
+
|
|
7
|
+
When you connect to a website using HTTPS, your system checks the server's SSL certificate against its collection of trusted CA certificates. If the server's certificate was issued by a trusted CA (or a chain leading back to one), the connection is considered secure.
|
|
8
|
+
|
|
9
|
+
CA certificates are essential for:
|
|
10
|
+
- Secure web browsing (HTTPS)
|
|
11
|
+
- Package manager operations (downloading from secure repositories)
|
|
12
|
+
- API calls from applications
|
|
13
|
+
- Git operations over HTTPS
|
|
14
|
+
- Email encryption (TLS)
|
|
15
|
+
- VPN connections
|
|
16
|
+
|
|
17
|
+
## Dependencies
|
|
18
|
+
|
|
19
|
+
### macOS (Homebrew)
|
|
20
|
+
- **Required:** Homebrew - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
|
|
21
|
+
- **Optional:** None
|
|
22
|
+
- **Auto-installed:** None (macOS uses the system Keychain for CA certificates; Homebrew package provides Mozilla CA bundle for command-line tools)
|
|
23
|
+
|
|
24
|
+
### Ubuntu (APT/Snap)
|
|
25
|
+
- **Required:** None (APT is built into Ubuntu/Debian)
|
|
26
|
+
- **Optional:** None
|
|
27
|
+
- **Auto-installed:** OpenSSL (installed automatically by APT as a dependency)
|
|
28
|
+
|
|
29
|
+
### Raspberry Pi OS (APT/Snap)
|
|
30
|
+
- **Required:** None (APT is built into Raspberry Pi OS)
|
|
31
|
+
- **Optional:** None
|
|
32
|
+
- **Auto-installed:** OpenSSL (installed automatically by APT as a dependency)
|
|
33
|
+
|
|
34
|
+
### Amazon Linux (DNF/YUM)
|
|
35
|
+
- **Required:** None (DNF/YUM is built into Amazon Linux)
|
|
36
|
+
- **Optional:** None
|
|
37
|
+
- **Auto-installed:** p11-kit-trust, OpenSSL (installed automatically by DNF/YUM as dependencies)
|
|
38
|
+
|
|
39
|
+
### Windows (Chocolatey/winget)
|
|
40
|
+
- **Required:** None (Windows manages CA certificates through the Windows Certificate Store, which is built into the operating system)
|
|
41
|
+
- **Optional:** None
|
|
42
|
+
- **Auto-installed:** None (Windows Update automatically maintains root CA certificates)
|
|
43
|
+
|
|
44
|
+
### Git Bash (Manual/Portable)
|
|
45
|
+
- **Required:** Git for Windows - Download from https://git-scm.com/download/win or install via `choco install git -y`
|
|
46
|
+
- **Optional:** None
|
|
47
|
+
- **Auto-installed:** None (Git for Windows includes its own CA certificate bundle for Git and cURL operations)
|
|
48
|
+
|
|
49
|
+
## Prerequisites
|
|
50
|
+
|
|
51
|
+
Before managing CA certificates on any platform, ensure:
|
|
52
|
+
|
|
53
|
+
1. **Internet connectivity** - Required to download packages and certificate updates
|
|
54
|
+
2. **Administrative privileges** - Required on all platforms for system-wide certificate store modifications
|
|
55
|
+
3. **Understanding of security implications** - Adding untrusted CA certificates can compromise system security
|
|
56
|
+
|
|
57
|
+
**Important Security Note**: Only add CA certificates from sources you explicitly trust. Adding a malicious CA certificate to your system's trust store allows attackers to intercept all your encrypted traffic (man-in-the-middle attacks).
|
|
58
|
+
|
|
59
|
+
## Platform-Specific Installation
|
|
60
|
+
|
|
61
|
+
### macOS (Homebrew)
|
|
62
|
+
|
|
63
|
+
#### Prerequisites
|
|
64
|
+
|
|
65
|
+
- macOS 10.15 (Catalina) or later (macOS 14 Sonoma+ recommended)
|
|
66
|
+
- Homebrew package manager installed
|
|
67
|
+
- Terminal access
|
|
68
|
+
|
|
69
|
+
macOS maintains CA certificates in two locations:
|
|
70
|
+
1. **System Keychain** - Used by Safari, native macOS applications, and system services
|
|
71
|
+
2. **Homebrew ca-certificates** - Used by Homebrew-installed tools like cURL, OpenSSL, and Python
|
|
72
|
+
|
|
73
|
+
If Homebrew is not installed, install it first:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### Installation Steps
|
|
80
|
+
|
|
81
|
+
Run the following command to install the Mozilla CA certificate bundle via Homebrew:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
brew install --quiet ca-certificates
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts.
|
|
88
|
+
|
|
89
|
+
After installation, Homebrew-installed tools automatically use this certificate bundle. The certificate bundle is sourced from Mozilla (via https://curl.se/docs/caextract.html) and is regularly updated.
|
|
90
|
+
|
|
91
|
+
#### Verification
|
|
92
|
+
|
|
93
|
+
Confirm the installation succeeded:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
brew list ca-certificates
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Expected output (file list showing certificate locations):
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
/opt/homebrew/Cellar/ca-certificates/2024-11-26/share/ca-certificates/cacert.pem
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Verify SSL connections work with the updated certificates:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
curl -s -o /dev/null -w "%{http_code}" https://www.google.com
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Expected output: `200`
|
|
112
|
+
|
|
113
|
+
Check the certificate file location:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
brew --prefix ca-certificates
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Expected output: `/opt/homebrew/opt/ca-certificates` (Apple Silicon) or `/usr/local/opt/ca-certificates` (Intel).
|
|
120
|
+
|
|
121
|
+
#### Troubleshooting
|
|
122
|
+
|
|
123
|
+
**Problem**: SSL errors persist after installing ca-certificates
|
|
124
|
+
|
|
125
|
+
**Solution**: Run the post-install script to regenerate certificate symlinks:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
brew postinstall ca-certificates
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Problem**: Homebrew tools still report certificate errors in corporate environments with SSL inspection
|
|
132
|
+
|
|
133
|
+
**Solution**: Your organization uses a proxy that intercepts SSL traffic. You need to add your organization's CA certificate to the Homebrew trust store:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Export your organization's CA certificate from Keychain Access as a .pem file
|
|
137
|
+
# Then add it to Homebrew's certificate bundle
|
|
138
|
+
cat /path/to/corporate-ca.pem >> "$(brew --prefix)/etc/ca-certificates/cert.pem"
|
|
139
|
+
brew postinstall ca-certificates
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Problem**: System tools (Safari, Mail) show certificate errors
|
|
143
|
+
|
|
144
|
+
**Solution**: System applications use the macOS Keychain, not Homebrew's ca-certificates. Use Keychain Access to manage system-wide certificates, or install certificates via command line:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /path/to/certificate.crt
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### Ubuntu/Debian (APT)
|
|
153
|
+
|
|
154
|
+
#### Prerequisites
|
|
155
|
+
|
|
156
|
+
- Ubuntu 18.04 LTS or later, or Debian 10 (Buster) or later
|
|
157
|
+
- sudo privileges
|
|
158
|
+
- Internet connectivity
|
|
159
|
+
|
|
160
|
+
The `ca-certificates` package is typically pre-installed on Ubuntu and Debian systems. The steps below ensure it is installed and up to date.
|
|
161
|
+
|
|
162
|
+
#### Installation Steps
|
|
163
|
+
|
|
164
|
+
Run the following commands to update package lists and install/update the CA certificates package:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
|
|
171
|
+
|
|
172
|
+
After installing or updating the package, regenerate the certificate bundle:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
sudo update-ca-certificates
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
This command:
|
|
179
|
+
1. Reads certificate configuration from `/etc/ca-certificates.conf`
|
|
180
|
+
2. Processes certificates from `/usr/share/ca-certificates/` and `/usr/local/share/ca-certificates/`
|
|
181
|
+
3. Generates the unified bundle at `/etc/ssl/certs/ca-certificates.crt`
|
|
182
|
+
4. Creates individual certificate symlinks in `/etc/ssl/certs/`
|
|
183
|
+
|
|
184
|
+
#### Verification
|
|
185
|
+
|
|
186
|
+
Confirm the package is installed:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
dpkg -l | grep ca-certificates
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Expected output (version numbers may vary):
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Verify the certificate bundle exists:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
ls -la /etc/ssl/certs/ca-certificates.crt
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Test SSL connectivity:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
curl -s -o /dev/null -w "%{http_code}" https://www.google.com
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Expected output: `200`
|
|
211
|
+
|
|
212
|
+
#### Troubleshooting
|
|
213
|
+
|
|
214
|
+
**Problem**: `E: Unable to locate package ca-certificates`
|
|
215
|
+
|
|
216
|
+
**Solution**: Update the package list first:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**Problem**: SSL errors after fresh install with message about `/etc/ssl/certs/ca-certificates.crt`
|
|
223
|
+
|
|
224
|
+
**Solution**: The certificate bundle may not have been generated. Run:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
sudo update-ca-certificates --fresh
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
The `--fresh` flag removes existing symlinks and regenerates everything from scratch.
|
|
231
|
+
|
|
232
|
+
**Problem**: Custom/corporate CA certificate not being recognized
|
|
233
|
+
|
|
234
|
+
**Solution**: Ensure the certificate:
|
|
235
|
+
1. Has a `.crt` extension (required)
|
|
236
|
+
2. Is in PEM format (text format starting with `-----BEGIN CERTIFICATE-----`)
|
|
237
|
+
3. Is placed in `/usr/local/share/ca-certificates/`
|
|
238
|
+
|
|
239
|
+
Then run:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
sudo update-ca-certificates
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Problem**: Need to convert DER format certificate to PEM
|
|
246
|
+
|
|
247
|
+
**Solution**: Use OpenSSL to convert:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
sudo openssl x509 -inform der -outform pem -in certificate.der -out /usr/local/share/ca-certificates/certificate.crt
|
|
251
|
+
sudo update-ca-certificates
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### Raspberry Pi OS (APT)
|
|
257
|
+
|
|
258
|
+
#### Prerequisites
|
|
259
|
+
|
|
260
|
+
- Raspberry Pi OS (32-bit or 64-bit)
|
|
261
|
+
- Raspberry Pi 2 or later (Raspberry Pi 3B+ or later recommended for 64-bit)
|
|
262
|
+
- sudo privileges
|
|
263
|
+
- Internet connectivity
|
|
264
|
+
|
|
265
|
+
Raspberry Pi OS is based on Debian, so CA certificates management follows the same process as Ubuntu/Debian. The `ca-certificates` package is typically pre-installed.
|
|
266
|
+
|
|
267
|
+
#### Installation Steps
|
|
268
|
+
|
|
269
|
+
Run the following commands to update package lists and install/update the CA certificates package:
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
|
|
276
|
+
|
|
277
|
+
After installing or updating the package, regenerate the certificate bundle:
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
sudo update-ca-certificates
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**ARM Architecture Note**: The ca-certificates package is architecture-independent (it contains only certificate data files, no compiled binaries), so there is no difference between ARM and x86 installations.
|
|
284
|
+
|
|
285
|
+
#### Verification
|
|
286
|
+
|
|
287
|
+
Confirm the package is installed:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
dpkg -l | grep ca-certificates
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Expected output (version numbers may vary):
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
ii ca-certificates 20230311 all Common CA certificates
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Verify the certificate bundle exists and check its size:
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
ls -la /etc/ssl/certs/ca-certificates.crt
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Expected output shows a file of approximately 200-250KB containing all trusted CA certificates.
|
|
306
|
+
|
|
307
|
+
Test SSL connectivity:
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
curl -s -o /dev/null -w "%{http_code}" https://www.google.com
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Expected output: `200`
|
|
314
|
+
|
|
315
|
+
#### Troubleshooting
|
|
316
|
+
|
|
317
|
+
**Problem**: `apt-get update` fails with 404 errors
|
|
318
|
+
|
|
319
|
+
**Solution**: Package mirrors may be outdated. Use the `--fix-missing` flag:
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
sudo apt-get update --fix-missing && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Problem**: `server certificate verification failed` errors
|
|
326
|
+
|
|
327
|
+
**Solution**: The CA certificate bundle may be outdated or corrupted. Reinstall and regenerate:
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --reinstall ca-certificates
|
|
331
|
+
sudo update-ca-certificates --fresh
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Problem**: Slow download speeds during installation
|
|
335
|
+
|
|
336
|
+
**Solution**: Raspberry Pi may have limited bandwidth, especially over WiFi. Use a wired Ethernet connection if available, or wait for the installation to complete.
|
|
337
|
+
|
|
338
|
+
**Problem**: Disk space errors during installation
|
|
339
|
+
|
|
340
|
+
**Solution**: Check available space and clean up:
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
df -h
|
|
344
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove -y
|
|
345
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get clean
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
### Amazon Linux/RHEL (DNF/YUM)
|
|
351
|
+
|
|
352
|
+
#### Prerequisites
|
|
353
|
+
|
|
354
|
+
- Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
|
|
355
|
+
- sudo privileges
|
|
356
|
+
- Internet connectivity
|
|
357
|
+
|
|
358
|
+
The `ca-certificates` package is pre-installed on all Amazon Linux versions. Amazon Linux 2023 uses `dnf` as the package manager, while Amazon Linux 2 uses `yum`.
|
|
359
|
+
|
|
360
|
+
**Note**: Unlike Debian-based systems that use `update-ca-certificates`, Red Hat-based systems (including Amazon Linux) use `update-ca-trust` to manage the certificate trust store.
|
|
361
|
+
|
|
362
|
+
#### Installation Steps
|
|
363
|
+
|
|
364
|
+
**For Amazon Linux 2023:**
|
|
365
|
+
|
|
366
|
+
Run the following command to ensure ca-certificates is installed and up to date:
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
sudo dnf install -y ca-certificates && sudo update-ca-trust
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
**For Amazon Linux 2:**
|
|
373
|
+
|
|
374
|
+
Run the following command to ensure ca-certificates is installed and up to date:
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
sudo yum install -y ca-certificates && sudo update-ca-trust
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
The `-y` flag automatically confirms installation prompts, enabling non-interactive execution.
|
|
381
|
+
|
|
382
|
+
The `update-ca-trust` command:
|
|
383
|
+
1. Reads certificates from `/etc/pki/ca-trust/source/anchors/` and `/usr/share/pki/ca-trust-source/`
|
|
384
|
+
2. Generates the unified bundle at `/etc/pki/tls/certs/ca-bundle.crt`
|
|
385
|
+
3. Updates OpenSSL-compatible certificate directory at `/etc/pki/tls/certs/`
|
|
386
|
+
|
|
387
|
+
#### Verification
|
|
388
|
+
|
|
389
|
+
Confirm the package is installed:
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
rpm -q ca-certificates
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
Expected output (version numbers may vary):
|
|
396
|
+
|
|
397
|
+
```
|
|
398
|
+
ca-certificates-2023.2.60_v7.0.306-1.0.amzn2023.0.1.noarch
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
Verify the certificate bundle exists:
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
ls -la /etc/pki/tls/certs/ca-bundle.crt
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
Test SSL connectivity:
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
curl -s -o /dev/null -w "%{http_code}" https://www.google.com
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
Expected output: `200`
|
|
414
|
+
|
|
415
|
+
#### Troubleshooting
|
|
416
|
+
|
|
417
|
+
**Problem**: Custom CA certificate not being recognized
|
|
418
|
+
|
|
419
|
+
**Solution**: Ensure the certificate is placed in the correct location and update the trust store:
|
|
420
|
+
|
|
421
|
+
```bash
|
|
422
|
+
sudo cp /path/to/custom-ca.crt /etc/pki/ca-trust/source/anchors/
|
|
423
|
+
sudo update-ca-trust
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**Problem**: `update-ca-trust: command not found`
|
|
427
|
+
|
|
428
|
+
**Solution**: The `p11-kit-trust` package may be missing. Install it:
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
# Amazon Linux 2023
|
|
432
|
+
sudo dnf install -y p11-kit-trust
|
|
433
|
+
|
|
434
|
+
# Amazon Linux 2
|
|
435
|
+
sudo yum install -y p11-kit-trust
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
**Problem**: SSL errors with Let's Encrypt certificates
|
|
439
|
+
|
|
440
|
+
**Solution**: Older Amazon Linux instances may have outdated CA certificates that don't include newer Let's Encrypt root certificates. Update the package:
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
# Amazon Linux 2023
|
|
444
|
+
sudo dnf update -y ca-certificates
|
|
445
|
+
|
|
446
|
+
# Amazon Linux 2
|
|
447
|
+
sudo yum update -y ca-certificates
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**Problem**: `dnf: command not found` on Amazon Linux 2
|
|
451
|
+
|
|
452
|
+
**Solution**: Amazon Linux 2 uses `yum` instead of `dnf`. Use `yum` for all package operations:
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
sudo yum install -y ca-certificates
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
---
|
|
459
|
+
|
|
460
|
+
### Windows (Chocolatey/winget)
|
|
461
|
+
|
|
462
|
+
#### Prerequisites
|
|
463
|
+
|
|
464
|
+
- Windows 10 or Windows 11
|
|
465
|
+
- Administrator PowerShell or Command Prompt
|
|
466
|
+
- Internet connectivity
|
|
467
|
+
|
|
468
|
+
**Important**: Windows handles CA certificates differently from Linux and macOS. There is no "ca-certificates" package to install. Instead, Windows maintains a Certificate Trust List (CTL) that is automatically updated through Windows Update.
|
|
469
|
+
|
|
470
|
+
Windows stores certificates in the Windows Certificate Store, accessible via:
|
|
471
|
+
- Certificate Manager (`certmgr.msc`) for current user certificates
|
|
472
|
+
- Certificate Manager (`certlm.msc`) for local machine certificates
|
|
473
|
+
- `certutil` command-line tool
|
|
474
|
+
- PowerShell certificate provider
|
|
475
|
+
|
|
476
|
+
#### Installation Steps
|
|
477
|
+
|
|
478
|
+
Windows automatically updates root CA certificates through Windows Update. To manually trigger an update or verify the certificate store is current, run the following commands in an Administrator PowerShell:
|
|
479
|
+
|
|
480
|
+
```powershell
|
|
481
|
+
# Download the latest root certificate list from Microsoft
|
|
482
|
+
certutil -generateSSTFromWU C:\Windows\Temp\roots.sst
|
|
483
|
+
|
|
484
|
+
# Import the certificates to the Trusted Root store
|
|
485
|
+
certutil -addstore -f Root C:\Windows\Temp\roots.sst
|
|
486
|
+
|
|
487
|
+
# Clean up the temporary file
|
|
488
|
+
Remove-Item C:\Windows\Temp\roots.sst -Force
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
This downloads the current Certificate Trust List from Microsoft's Windows Update servers and imports all root certificates into the local machine's Trusted Root Certification Authorities store.
|
|
492
|
+
|
|
493
|
+
**Note**: These commands must be run in an Administrator PowerShell window. Right-click PowerShell and select "Run as administrator".
|
|
494
|
+
|
|
495
|
+
#### Verification
|
|
496
|
+
|
|
497
|
+
Verify the root certificate store contains certificates:
|
|
498
|
+
|
|
499
|
+
```powershell
|
|
500
|
+
# Count certificates in the Trusted Root store
|
|
501
|
+
(Get-ChildItem Cert:\LocalMachine\Root).Count
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
Expected output: A number greater than 100 (typically 150-300 certificates).
|
|
505
|
+
|
|
506
|
+
Check the last sync time for automatic certificate updates:
|
|
507
|
+
|
|
508
|
+
```powershell
|
|
509
|
+
certutil -verifyctl AuthRoot | Select-String "LastSyncTime"
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
Test SSL connectivity (use `curl.exe` to avoid PowerShell alias):
|
|
513
|
+
|
|
514
|
+
```powershell
|
|
515
|
+
curl.exe -s -o NUL -w "%{http_code}" https://www.google.com
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
Expected output: `200`
|
|
519
|
+
|
|
520
|
+
List certificates expiring within 60 days:
|
|
521
|
+
|
|
522
|
+
```powershell
|
|
523
|
+
Get-ChildItem Cert:\LocalMachine\Root | Where-Object { $_.NotAfter -lt (Get-Date).AddDays(60) } | Select-Object Subject, NotAfter
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
#### Troubleshooting
|
|
527
|
+
|
|
528
|
+
**Problem**: Certificate updates fail with "Unable to connect to Windows Update"
|
|
529
|
+
|
|
530
|
+
**Solution**: The server may not have internet access or Windows Update is blocked. Download the certificates from a machine with access and import manually:
|
|
531
|
+
|
|
532
|
+
```powershell
|
|
533
|
+
# On a machine with internet access:
|
|
534
|
+
certutil -generateSSTFromWU roots.sst
|
|
535
|
+
|
|
536
|
+
# Copy roots.sst to the target machine, then:
|
|
537
|
+
certutil -addstore -f Root C:\path\to\roots.sst
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
**Problem**: Automatic root certificate updates are disabled
|
|
541
|
+
|
|
542
|
+
**Solution**: Check the registry setting and enable automatic updates:
|
|
543
|
+
|
|
544
|
+
```powershell
|
|
545
|
+
# Check if auto-update is disabled
|
|
546
|
+
Get-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdate -ErrorAction SilentlyContinue
|
|
547
|
+
|
|
548
|
+
# If DisableRootAutoUpdate is 1, remove it to enable auto-updates
|
|
549
|
+
Remove-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdate -ErrorAction SilentlyContinue
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
**Problem**: Application still reports certificate errors after update
|
|
553
|
+
|
|
554
|
+
**Solution**: Some applications (Firefox, Java) maintain their own certificate stores. You need to add certificates to those application-specific stores separately.
|
|
555
|
+
|
|
556
|
+
**Problem**: Need to add a custom/corporate CA certificate
|
|
557
|
+
|
|
558
|
+
**Solution**: Import the certificate to the Trusted Root store:
|
|
559
|
+
|
|
560
|
+
```powershell
|
|
561
|
+
certutil -addstore -f Root C:\path\to\corporate-ca.crt
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
Or using PowerShell:
|
|
565
|
+
|
|
566
|
+
```powershell
|
|
567
|
+
Import-Certificate -FilePath C:\path\to\corporate-ca.crt -CertStoreLocation Cert:\LocalMachine\Root
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
### WSL (Ubuntu)
|
|
573
|
+
|
|
574
|
+
#### Prerequisites
|
|
575
|
+
|
|
576
|
+
- Windows 10 version 2004+ or Windows 11
|
|
577
|
+
- Windows Subsystem for Linux (WSL) with Ubuntu installed
|
|
578
|
+
- WSL 2 recommended for best performance
|
|
579
|
+
- sudo privileges within WSL
|
|
580
|
+
|
|
581
|
+
WSL Ubuntu installations follow the same process as native Ubuntu, using APT. The certificate store is separate from the Windows host.
|
|
582
|
+
|
|
583
|
+
#### Installation Steps
|
|
584
|
+
|
|
585
|
+
Open your WSL Ubuntu terminal and run:
|
|
586
|
+
|
|
587
|
+
```bash
|
|
588
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates && sudo update-ca-certificates
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
|
|
592
|
+
|
|
593
|
+
#### Verification
|
|
594
|
+
|
|
595
|
+
Confirm the package is installed:
|
|
596
|
+
|
|
597
|
+
```bash
|
|
598
|
+
dpkg -l | grep ca-certificates
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
Expected output (version numbers may vary):
|
|
602
|
+
|
|
603
|
+
```
|
|
604
|
+
ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
Verify the certificate bundle exists:
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
ls -la /etc/ssl/certs/ca-certificates.crt
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
Test SSL connectivity:
|
|
614
|
+
|
|
615
|
+
```bash
|
|
616
|
+
curl -s -o /dev/null -w "%{http_code}" https://www.google.com
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
Expected output: `200`
|
|
620
|
+
|
|
621
|
+
#### Troubleshooting
|
|
622
|
+
|
|
623
|
+
**Problem**: `E: Unable to locate package ca-certificates`
|
|
624
|
+
|
|
625
|
+
**Solution**: Update the package list first:
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
**Problem**: SSL errors in WSL but not in Windows
|
|
632
|
+
|
|
633
|
+
**Solution**: WSL has its own certificate store separate from Windows. Certificates added to Windows Certificate Store are not automatically available in WSL. Add certificates to the WSL store:
|
|
634
|
+
|
|
635
|
+
```bash
|
|
636
|
+
sudo cp /path/to/certificate.crt /usr/local/share/ca-certificates/
|
|
637
|
+
sudo update-ca-certificates
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
**Problem**: WSL cannot resolve DNS or reach package repositories
|
|
641
|
+
|
|
642
|
+
**Solution**: WSL may have DNS resolution issues. Try restarting WSL:
|
|
643
|
+
|
|
644
|
+
```powershell
|
|
645
|
+
# From Windows PowerShell (not WSL)
|
|
646
|
+
wsl --shutdown
|
|
647
|
+
wsl
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
If DNS issues persist, manually configure DNS in WSL:
|
|
651
|
+
|
|
652
|
+
```bash
|
|
653
|
+
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
**Problem**: Corporate proxy SSL interception causes certificate errors
|
|
657
|
+
|
|
658
|
+
**Solution**: Export your corporate CA certificate from Windows and add it to WSL:
|
|
659
|
+
|
|
660
|
+
```powershell
|
|
661
|
+
# From Windows PowerShell - export certificate to file
|
|
662
|
+
certutil -store -user Root "Corporate CA Name" C:\temp\corporate-ca.cer
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
```bash
|
|
666
|
+
# From WSL - convert and install
|
|
667
|
+
openssl x509 -inform der -in /mnt/c/temp/corporate-ca.cer -out /tmp/corporate-ca.crt
|
|
668
|
+
sudo cp /tmp/corporate-ca.crt /usr/local/share/ca-certificates/
|
|
669
|
+
sudo update-ca-certificates
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
---
|
|
673
|
+
|
|
674
|
+
### Git Bash (Windows)
|
|
675
|
+
|
|
676
|
+
#### Prerequisites
|
|
677
|
+
|
|
678
|
+
- Windows 10 or Windows 11
|
|
679
|
+
- Git for Windows installed (includes Git Bash)
|
|
680
|
+
|
|
681
|
+
Git for Windows includes its own CA certificate bundle that is used by Git and the bundled cURL. This bundle is separate from both the Windows Certificate Store and any WSL certificate stores.
|
|
682
|
+
|
|
683
|
+
#### Installation Steps
|
|
684
|
+
|
|
685
|
+
Git for Windows automatically includes and manages its CA certificate bundle. No separate installation is required.
|
|
686
|
+
|
|
687
|
+
To update Git for Windows (and its certificate bundle) via Chocolatey:
|
|
688
|
+
|
|
689
|
+
```powershell
|
|
690
|
+
choco upgrade git -y
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
The CA certificate bundle is located at:
|
|
694
|
+
- `C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt` (Git commands)
|
|
695
|
+
- `C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt` (cURL/OpenSSL)
|
|
696
|
+
|
|
697
|
+
To manually update just the CA bundle without upgrading Git, download the latest bundle from Mozilla:
|
|
698
|
+
|
|
699
|
+
```bash
|
|
700
|
+
# Run in Git Bash
|
|
701
|
+
curl -o /mingw64/etc/ssl/certs/ca-bundle.crt https://curl.se/ca/cacert.pem
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
**Note**: The above command requires running Git Bash as Administrator if Git is installed in Program Files.
|
|
705
|
+
|
|
706
|
+
#### Verification
|
|
707
|
+
|
|
708
|
+
Open Git Bash and verify the certificate bundle exists:
|
|
709
|
+
|
|
710
|
+
```bash
|
|
711
|
+
ls -la /mingw64/etc/ssl/certs/ca-bundle.crt
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
Expected output: A file of approximately 200-250KB.
|
|
715
|
+
|
|
716
|
+
Test SSL connectivity:
|
|
717
|
+
|
|
718
|
+
```bash
|
|
719
|
+
curl -s -o /dev/null -w "%{http_code}" https://www.google.com
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
Expected output: `200`
|
|
723
|
+
|
|
724
|
+
Test Git can connect to HTTPS remotes:
|
|
725
|
+
|
|
726
|
+
```bash
|
|
727
|
+
git ls-remote https://github.com/git/git.git HEAD
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
Expected output: SHA hash followed by `HEAD`.
|
|
731
|
+
|
|
732
|
+
#### Troubleshooting
|
|
733
|
+
|
|
734
|
+
**Problem**: `SSL certificate problem: unable to get local issuer certificate`
|
|
735
|
+
|
|
736
|
+
**Solution**: The CA bundle may be outdated or missing. Update it:
|
|
737
|
+
|
|
738
|
+
```bash
|
|
739
|
+
# Download latest CA bundle
|
|
740
|
+
curl -o /tmp/cacert.pem https://curl.se/ca/cacert.pem
|
|
741
|
+
|
|
742
|
+
# Copy to Git's SSL directory (run Git Bash as Administrator)
|
|
743
|
+
cp /tmp/cacert.pem /mingw64/etc/ssl/certs/ca-bundle.crt
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
**Problem**: Corporate proxy SSL interception causes Git errors
|
|
747
|
+
|
|
748
|
+
**Solution**: Add your corporate CA certificate to Git's bundle:
|
|
749
|
+
|
|
750
|
+
```bash
|
|
751
|
+
# Append corporate CA to the bundle (run as Administrator)
|
|
752
|
+
cat /path/to/corporate-ca.pem >> /mingw64/etc/ssl/certs/ca-bundle.crt
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
Or configure Git to use a custom CA bundle:
|
|
756
|
+
|
|
757
|
+
```bash
|
|
758
|
+
git config --global http.sslCAInfo /path/to/custom-ca-bundle.crt
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
**Problem**: Want Git Bash to use Windows Certificate Store instead of its own bundle
|
|
762
|
+
|
|
763
|
+
**Solution**: Configure Git to use the Windows SChannel backend:
|
|
764
|
+
|
|
765
|
+
```bash
|
|
766
|
+
git config --global http.sslBackend schannel
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
This tells Git to use the Windows Certificate Store, which is automatically updated through Windows Update.
|
|
770
|
+
|
|
771
|
+
**Problem**: cURL in Git Bash has SSL errors but Git works fine
|
|
772
|
+
|
|
773
|
+
**Solution**: Git and cURL may use different SSL configurations. Ensure cURL uses the correct CA bundle:
|
|
774
|
+
|
|
775
|
+
```bash
|
|
776
|
+
export CURL_CA_BUNDLE=/mingw64/etc/ssl/certs/ca-bundle.crt
|
|
777
|
+
```
|
|
778
|
+
|
|
779
|
+
Add this to your `~/.bashrc` for persistence:
|
|
780
|
+
|
|
781
|
+
```bash
|
|
782
|
+
echo 'export CURL_CA_BUNDLE=/mingw64/etc/ssl/certs/ca-bundle.crt' >> ~/.bashrc
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
---
|
|
786
|
+
|
|
787
|
+
## Post-Installation Configuration
|
|
788
|
+
|
|
789
|
+
### Adding Custom CA Certificates
|
|
790
|
+
|
|
791
|
+
Organizations often need to add custom CA certificates for internal services, corporate proxies, or development environments.
|
|
792
|
+
|
|
793
|
+
**Linux (Ubuntu/Debian/Raspberry Pi OS):**
|
|
794
|
+
|
|
795
|
+
```bash
|
|
796
|
+
# Copy certificate (must have .crt extension and be in PEM format)
|
|
797
|
+
sudo cp /path/to/custom-ca.crt /usr/local/share/ca-certificates/
|
|
798
|
+
|
|
799
|
+
# Update the trust store
|
|
800
|
+
sudo update-ca-certificates
|
|
801
|
+
```
|
|
802
|
+
|
|
803
|
+
**Linux (Amazon Linux/RHEL):**
|
|
804
|
+
|
|
805
|
+
```bash
|
|
806
|
+
# Copy certificate to anchors directory
|
|
807
|
+
sudo cp /path/to/custom-ca.crt /etc/pki/ca-trust/source/anchors/
|
|
808
|
+
|
|
809
|
+
# Update the trust store
|
|
810
|
+
sudo update-ca-trust
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
**macOS:**
|
|
814
|
+
|
|
815
|
+
```bash
|
|
816
|
+
# Add to system keychain (requires admin password)
|
|
817
|
+
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /path/to/custom-ca.crt
|
|
818
|
+
|
|
819
|
+
# For Homebrew tools, also add to the Homebrew bundle
|
|
820
|
+
cat /path/to/custom-ca.crt >> "$(brew --prefix)/etc/ca-certificates/cert.pem"
|
|
821
|
+
brew postinstall ca-certificates
|
|
822
|
+
```
|
|
823
|
+
|
|
824
|
+
**Windows:**
|
|
825
|
+
|
|
826
|
+
```powershell
|
|
827
|
+
# Import to Trusted Root store (run as Administrator)
|
|
828
|
+
Import-Certificate -FilePath C:\path\to\custom-ca.crt -CertStoreLocation Cert:\LocalMachine\Root
|
|
829
|
+
```
|
|
830
|
+
|
|
831
|
+
### Verifying SSL Connections
|
|
832
|
+
|
|
833
|
+
Test that SSL connections work correctly after modifying certificates:
|
|
834
|
+
|
|
835
|
+
```bash
|
|
836
|
+
# Linux/macOS/Git Bash
|
|
837
|
+
curl -v https://your-internal-server.example.com 2>&1 | grep "SSL certificate verify ok"
|
|
838
|
+
|
|
839
|
+
# Windows PowerShell
|
|
840
|
+
curl.exe -v https://your-internal-server.example.com 2>&1 | Select-String "SSL certificate verify ok"
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
---
|
|
844
|
+
|
|
845
|
+
## Common Issues
|
|
846
|
+
|
|
847
|
+
### Issue: SSL Certificate Errors After System Update
|
|
848
|
+
|
|
849
|
+
**Symptoms**: Applications that previously worked start showing certificate errors.
|
|
850
|
+
|
|
851
|
+
**Solution**: The certificate bundle may have been overwritten during update. Regenerate it:
|
|
852
|
+
|
|
853
|
+
```bash
|
|
854
|
+
# Ubuntu/Debian/Raspberry Pi OS
|
|
855
|
+
sudo update-ca-certificates --fresh
|
|
856
|
+
|
|
857
|
+
# Amazon Linux/RHEL
|
|
858
|
+
sudo update-ca-trust
|
|
859
|
+
|
|
860
|
+
# macOS
|
|
861
|
+
brew postinstall ca-certificates
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
### Issue: Application-Specific Certificate Stores
|
|
865
|
+
|
|
866
|
+
**Symptoms**: System tools work but specific applications (Firefox, Java, Node.js) show certificate errors.
|
|
867
|
+
|
|
868
|
+
**Solution**: Some applications maintain their own certificate stores:
|
|
869
|
+
|
|
870
|
+
- **Firefox/Thunderbird**: Use `certutil` from NSS tools or the browser's certificate manager
|
|
871
|
+
- **Java**: Use `keytool` to add certificates to the Java truststore
|
|
872
|
+
- **Node.js**: Set `NODE_EXTRA_CA_CERTS` environment variable
|
|
873
|
+
- **Python**: May need `REQUESTS_CA_BUNDLE` or `SSL_CERT_FILE` environment variables
|
|
874
|
+
|
|
875
|
+
### Issue: Certificate Chain Incomplete
|
|
876
|
+
|
|
877
|
+
**Symptoms**: SSL errors mentioning "unable to get local issuer certificate" or "certificate chain incomplete".
|
|
878
|
+
|
|
879
|
+
**Solution**: Ensure intermediate certificates are included. Request the full certificate chain from the server administrator, or fetch it:
|
|
880
|
+
|
|
881
|
+
```bash
|
|
882
|
+
# Download certificate chain from a server
|
|
883
|
+
openssl s_client -connect server.example.com:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > chain.pem
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
### Issue: Expired Certificates in Trust Store
|
|
887
|
+
|
|
888
|
+
**Symptoms**: Warnings about expired certificates or connections failing to older servers.
|
|
889
|
+
|
|
890
|
+
**Solution**: Update the CA certificate package to get the latest trust list:
|
|
891
|
+
|
|
892
|
+
```bash
|
|
893
|
+
# Ubuntu/Debian/Raspberry Pi OS
|
|
894
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y ca-certificates
|
|
895
|
+
|
|
896
|
+
# Amazon Linux 2023
|
|
897
|
+
sudo dnf update -y ca-certificates
|
|
898
|
+
|
|
899
|
+
# Amazon Linux 2
|
|
900
|
+
sudo yum update -y ca-certificates
|
|
901
|
+
|
|
902
|
+
# macOS
|
|
903
|
+
brew upgrade ca-certificates
|
|
904
|
+
|
|
905
|
+
# Windows (run as Administrator)
|
|
906
|
+
certutil -generateSSTFromWU C:\Windows\Temp\roots.sst
|
|
907
|
+
certutil -addstore -f Root C:\Windows\Temp\roots.sst
|
|
908
|
+
```
|
|
909
|
+
|
|
910
|
+
### Issue: Self-Signed Certificates Not Trusted
|
|
911
|
+
|
|
912
|
+
**Symptoms**: Development servers with self-signed certificates show SSL errors.
|
|
913
|
+
|
|
914
|
+
**Solution**: Add the self-signed certificate to the trust store following the platform-specific instructions in Post-Installation Configuration above. For development only, you can also disable certificate verification (NOT recommended for production):
|
|
915
|
+
|
|
916
|
+
```bash
|
|
917
|
+
# cURL (temporary, for testing only)
|
|
918
|
+
curl -k https://dev-server.local
|
|
919
|
+
|
|
920
|
+
# Git (temporary, for testing only)
|
|
921
|
+
GIT_SSL_NO_VERIFY=1 git clone https://dev-server.local/repo.git
|
|
922
|
+
```
|
|
923
|
+
|
|
924
|
+
---
|
|
925
|
+
|
|
926
|
+
## References
|
|
927
|
+
|
|
928
|
+
- [Mozilla CA Certificate Store](https://wiki.mozilla.org/CA) - Source for most CA certificate bundles
|
|
929
|
+
- [cURL CA Bundle](https://curl.se/docs/caextract.html) - Mozilla certificates extracted for cURL
|
|
930
|
+
- [Ubuntu CA Certificates Documentation](https://ubuntu.com/server/docs/install-a-root-ca-certificate-in-the-trust-store) - Official Ubuntu guide
|
|
931
|
+
- [Debian ca-certificates Package](https://packages.debian.org/sid/ca-certificates) - Debian package details
|
|
932
|
+
- [Red Hat Certificate Management](https://www.redhat.com/en/blog/ca-certificates-cli) - Red Hat/CentOS/Amazon Linux guide
|
|
933
|
+
- [Homebrew ca-certificates Formula](https://formulae.brew.sh/formula/ca-certificates) - Homebrew package information
|
|
934
|
+
- [Microsoft Certutil Documentation](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/certutil) - Windows certificate utility
|
|
935
|
+
- [Microsoft Certificate Trust Configuration](https://learn.microsoft.com/en-us/windows-server/identity/ad-cs/configure-trusted-roots-disallowed-certificates) - Windows trust store management
|
|
936
|
+
- [Git SSL Configuration](https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables#_networking) - Git SSL/TLS settings
|
|
937
|
+
- [OpenSSL Certificate Operations](https://www.openssl.org/docs/man1.1.1/man1/x509.html) - OpenSSL certificate commands
|