<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.jb-vpn.uk/index.php?action=history&amp;feed=atom&amp;title=OpenVPN%3AUser_Management</id>
	<title>OpenVPN:User Management - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.jb-vpn.uk/index.php?action=history&amp;feed=atom&amp;title=OpenVPN%3AUser_Management"/>
	<link rel="alternate" type="text/html" href="https://wiki.jb-vpn.uk/index.php?title=OpenVPN:User_Management&amp;action=history"/>
	<updated>2026-06-16T06:18:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wiki.jb-vpn.uk/index.php?title=OpenVPN:User_Management&amp;diff=243&amp;oldid=prev</id>
		<title>Josh: Major update - troubleshooting guide: OpenVPN User Management (58 sections)</title>
		<link rel="alternate" type="text/html" href="https://wiki.jb-vpn.uk/index.php?title=OpenVPN:User_Management&amp;diff=243&amp;oldid=prev"/>
		<updated>2026-01-01T13:44:54Z</updated>

		<summary type="html">&lt;p&gt;Major update - troubleshooting guide: OpenVPN User Management (58 sections)&lt;/p&gt;
&lt;a href=&quot;https://wiki.jb-vpn.uk/index.php?title=OpenVPN:User_Management&amp;amp;diff=243&amp;amp;oldid=213&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.jb-vpn.uk/index.php?title=OpenVPN:User_Management&amp;diff=213&amp;oldid=prev</id>
		<title>Josh: Content removed - troubleshooting guide: OpenVPN User Management (12 sections)</title>
		<link rel="alternate" type="text/html" href="https://wiki.jb-vpn.uk/index.php?title=OpenVPN:User_Management&amp;diff=213&amp;oldid=prev"/>
		<updated>2026-01-01T13:28:37Z</updated>

		<summary type="html">&lt;p&gt;Content removed - troubleshooting guide: OpenVPN User Management (12 sections)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:28, 1 January 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;OpenVPN uses certificate-based authentication. Each user (client) requires:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;OpenVPN uses certificate-based authentication. Each user (client) requires:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;A unique client certificate&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;A unique client certificate&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;A client configuration file (&amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;Optionally, a static IP assignment via CCD file&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;A client configuration file (&amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;Optionally, a static IP assignment via CCD file&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Current Users ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Current Users ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Client configuration files are stored in &amp;lt;code&amp;gt;/root/&amp;lt;/code&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Client configuration files are stored in &amp;lt;code&amp;gt;/root/&amp;lt;/code&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;&amp;lt;code&amp;gt;josh.ovpn&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;&amp;lt;code&amp;gt;josh.ovpn&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;&amp;lt;code&amp;gt;Work_MacBook_Air.ovpn&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;&amp;lt;code&amp;gt;StrawberryNAS.ovpn&amp;lt;/code&amp;gt; (Synology NAS with static IP 10.8.0.2)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;&amp;lt;code&amp;gt;Work_MacBook_Air.ovpn&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;&amp;lt;code&amp;gt;StrawberryNAS.ovpn&amp;lt;/code&amp;gt; (Synology NAS with static IP 10.8.0.2)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Adding a New User ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Adding a New User ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l56&quot;&gt;Line 56:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 60:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    You&amp;#039;ll need to create a &amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt; file that combines:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    You&amp;#039;ll need to create a &amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt; file that combines:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;Client certificate&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;Client certificate&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;Client private key&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;CA certificate&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;Client private key&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;TLS-Crypt key&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;Connection settings&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;CA certificate&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;TLS-Crypt key&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;Connection settings&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    Use an existing &amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt; file as a template:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    Use an existing &amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt; file as a template:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l274&quot;&gt;Line 274:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 283:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;tar -czf openvpn-users-backup-$(date +%Y%m%d).tar.gz \&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;tar -czf openvpn-users-backup-$(date +%Y%m%d).tar.gz \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   /etc/openvpn/server/easy-rsa/pki/ \&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   /etc/openvpn/server/easy-rsa/pki/ \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   /root/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/del&gt;.ovpn \&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   /root/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/ins&gt;.ovpn \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   /etc/openvpn/ccd/&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   /etc/openvpn/ccd/&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l280&quot;&gt;Line 280:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 289:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Related Documentation ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Related Documentation ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;[Server Configuration](server-configuration.md) - Server setup&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[Server Configuration](server-configuration.md) - Server setup&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;[Client Configuration](client-configuration.md) - Client setup&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;[Certificate Management](certificate-management.md) - Certificate details&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[Client Configuration](client-configuration.md) - Client setup&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/del&gt;[[Documentation:Index|Troubleshooting]] - User management troubleshooting&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[Certificate Management](certificate-management.md) - Certificate details&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[[Documentation:Index|Troubleshooting]] - User management troubleshooting&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Documentation]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Documentation]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Documentation/OpenVPN]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Documentation/OpenVPN]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-179:rev-213:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.jb-vpn.uk/index.php?title=OpenVPN:User_Management&amp;diff=179&amp;oldid=prev</id>
		<title>Josh: Added troubleshooting guide: OpenVPN User Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.jb-vpn.uk/index.php?title=OpenVPN:User_Management&amp;diff=179&amp;oldid=prev"/>
		<updated>2026-01-01T13:16:18Z</updated>

		<summary type="html">&lt;p&gt;Added troubleshooting guide: OpenVPN User Management&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= OpenVPN User Management =&lt;br /&gt;
&lt;br /&gt;
This document covers managing OpenVPN users (clients) including adding, removing, and managing client certificates.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
OpenVPN uses certificate-based authentication. Each user (client) requires:&lt;br /&gt;
&amp;#039;&amp;#039; A unique client certificate&lt;br /&gt;
&amp;#039;&amp;#039; A client configuration file (&amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;#039;&amp;#039; Optionally, a static IP assignment via CCD file&lt;br /&gt;
&lt;br /&gt;
== Current Users ==&lt;br /&gt;
&lt;br /&gt;
Client configuration files are stored in &amp;lt;code&amp;gt;/root/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;#039;&amp;#039; &amp;lt;code&amp;gt;josh.ovpn&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039; &amp;lt;code&amp;gt;Work_MacBook_Air.ovpn&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039; &amp;lt;code&amp;gt;StrawberryNAS.ovpn&amp;lt;/code&amp;gt; (Synology NAS with static IP 10.8.0.2)&lt;br /&gt;
&lt;br /&gt;
== Adding a New User ==&lt;br /&gt;
&lt;br /&gt;
=== Method 1: Using the OpenVPN Install Script (Recommended) ===&lt;br /&gt;
&lt;br /&gt;
If you have the &amp;lt;code&amp;gt;openvpn-install.sh&amp;lt;/code&amp;gt; script available:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
= Run the installer script =&lt;br /&gt;
bash /root/openvpn-install.sh&lt;br /&gt;
&lt;br /&gt;
= Select option to add a new client =&lt;br /&gt;
= Follow the prompts to enter the client name =&lt;br /&gt;
= The script will automatically: =&lt;br /&gt;
=   - Generate the client certificate =&lt;br /&gt;
=   - Create the .ovpn configuration file =&lt;br /&gt;
=   - Place it in /root/ =&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Method 2: Manual Certificate Creation with Easy-RSA ===&lt;br /&gt;
&lt;br /&gt;
For manual certificate creation:&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Navigate to Easy-RSA directory&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   cd /etc/openvpn/server/easy-rsa/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Generate client certificate and key&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   ./easyrsa build-client-full clientname nopass&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   Replace &amp;lt;code&amp;gt;clientname&amp;lt;/code&amp;gt; with the desired client name (e.g., &amp;lt;code&amp;gt;newuser&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;laptop-john&amp;lt;/code&amp;gt;).&lt;br /&gt;
   &lt;br /&gt;
   The &amp;lt;code&amp;gt;nopass&amp;lt;/code&amp;gt; option creates a certificate without a password. Remove it if you want password protection.&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Create client configuration file&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &lt;br /&gt;
   You&amp;#039;ll need to create a &amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt; file that combines:&lt;br /&gt;
   &amp;#039;&amp;#039; Client certificate&lt;br /&gt;
   &amp;#039;&amp;#039; Client private key&lt;br /&gt;
   &amp;#039;&amp;#039; CA certificate&lt;br /&gt;
   &amp;#039;&amp;#039; TLS-Crypt key&lt;br /&gt;
   &amp;#039;&amp;#039; Connection settings&lt;br /&gt;
   &lt;br /&gt;
   Use an existing &amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt; file as a template:&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   cp /root/josh.ovpn /root/newclient.ovpn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   Then extract and replace the certificate sections:&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   # Extract client certificate from Easy-RSA&lt;br /&gt;
   cat /etc/openvpn/server/easy-rsa/pki/issued/clientname.crt&lt;br /&gt;
   &lt;br /&gt;
   # Extract client key&lt;br /&gt;
   cat /etc/openvpn/server/easy-rsa/pki/private/clientname.key&lt;br /&gt;
   &lt;br /&gt;
   # Replace the &amp;lt;cert&amp;gt; and &amp;lt;key&amp;gt; sections in the .ovpn file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Verify the configuration&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   # Test the .ovpn file syntax&lt;br /&gt;
   openvpn --config /root/newclient.ovpn --test-crypto&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Method 3: Using Easy-RSA Helper Script ===&lt;br /&gt;
&lt;br /&gt;
Create a helper script to automate the process:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
= /root/create-openvpn-client.sh =&lt;br /&gt;
&lt;br /&gt;
CLIENT_NAME=$1&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$CLIENT_NAME&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 &amp;lt;client-name&amp;gt;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
cd /etc/openvpn/server/easy-rsa/&lt;br /&gt;
&lt;br /&gt;
= Generate client certificate =&lt;br /&gt;
./easyrsa build-client-full &amp;quot;$CLIENT_NAME&amp;quot; nopass&lt;br /&gt;
&lt;br /&gt;
= Create .ovpn file =&lt;br /&gt;
CLIENT_DIR=&amp;quot;/root&amp;quot;&lt;br /&gt;
OVPN_FILE=&amp;quot;$CLIENT_DIR/$CLIENT_NAME.ovpn&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Start with common client configuration =&lt;br /&gt;
cat &amp;gt; &amp;quot;$OVPN_FILE&amp;quot; &amp;lt;&amp;lt; EOF&lt;br /&gt;
client&lt;br /&gt;
dev tun&lt;br /&gt;
proto udp&lt;br /&gt;
remote 87.106.61.62 1194&lt;br /&gt;
resolv-retry infinite&lt;br /&gt;
nobind&lt;br /&gt;
persist-key&lt;br /&gt;
persist-tun&lt;br /&gt;
remote-cert-tls server&lt;br /&gt;
auth SHA512&lt;br /&gt;
ignore-unknown-option block-outside-dns&lt;br /&gt;
verb 3&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
= Add CA certificate =&lt;br /&gt;
echo &amp;quot;&amp;lt;ca&amp;gt;&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
cat /etc/openvpn/server/ca.crt &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;lt;/ca&amp;gt;&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Add client certificate =&lt;br /&gt;
echo &amp;quot;&amp;lt;cert&amp;gt;&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
cat &amp;quot;/etc/openvpn/server/easy-rsa/pki/issued/$CLIENT_NAME.crt&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;lt;/cert&amp;gt;&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Add client key =&lt;br /&gt;
echo &amp;quot;&amp;lt;key&amp;gt;&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
cat &amp;quot;/etc/openvpn/server/easy-rsa/pki/private/$CLIENT_NAME.key&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;lt;/key&amp;gt;&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Add TLS-Crypt key =&lt;br /&gt;
echo &amp;quot;&amp;lt;tls-crypt&amp;gt;&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
cat /etc/openvpn/server/tc.key &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;lt;/tls-crypt&amp;gt;&amp;quot; &amp;gt;&amp;gt; &amp;quot;$OVPN_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Client configuration created: $OVPN_FILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Send this file securely to the client.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make it executable:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x /root/create-openvpn-client.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
/root/create-openvpn-client.sh newclientname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Assigning Static IP Addresses ==&lt;br /&gt;
&lt;br /&gt;
To assign a static IP address to a client:&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Create a CCD file&amp;#039;&amp;#039;&amp;#039; in &amp;lt;code&amp;gt;/etc/openvpn/ccd/&amp;lt;/code&amp;gt;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo nano /etc/openvpn/ccd/clientname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Add IP assignment&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
   ifconfig-push 10.8.0.X 255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   Replace &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; with the desired IP (e.g., &amp;lt;code&amp;gt;10.8.0.10&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Set proper permissions&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo chown nobody:nogroup /etc/openvpn/ccd/clientname&lt;br /&gt;
   sudo chmod 600 /etc/openvpn/ccd/clientname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Restart OpenVPN&amp;#039;&amp;#039;&amp;#039; (if needed): =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo systemctl restart openvpn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example&amp;#039;&amp;#039;&amp;#039;: The Synology NAS has a CCD file at &amp;lt;code&amp;gt;/etc/openvpn/ccd/StrawberryNAS&amp;lt;/code&amp;gt; with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifconfig-push 10.8.0.2 255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Listing Active Users ==&lt;br /&gt;
&lt;br /&gt;
To see which users are currently connected:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
= View IP persistence file (shows last assigned IPs) =&lt;br /&gt;
cat /etc/openvpn/server/ipp.txt&lt;br /&gt;
&lt;br /&gt;
= Check active connections via system logs =&lt;br /&gt;
journalctl -u openvpn | grep &amp;quot;Peer Connection Initiated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Or check the VPN interface =&lt;br /&gt;
ip addr show tun0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Revoking a User Certificate ==&lt;br /&gt;
&lt;br /&gt;
When a user should no longer have access:&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Navigate to Easy-RSA directory&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   cd /etc/openvpn/server/easy-rsa/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Revoke the certificate&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   ./easyrsa revoke clientname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   You&amp;#039;ll be prompted to confirm. Type &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Update the Certificate Revocation List (CRL)&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   ./easyrsa gen-crl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Copy the updated CRL to the server directory&amp;#039;&amp;#039;&amp;#039;: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   cp pki/crl.pem /etc/openvpn/server/crl.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Restart OpenVPN&amp;#039;&amp;#039;&amp;#039; to apply the revocation: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   systemctl restart openvpn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Remove client files&amp;#039;&amp;#039;&amp;#039; (optional but recommended): =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   # Remove .ovpn file&lt;br /&gt;
   rm /root/clientname.ovpn&lt;br /&gt;
   &lt;br /&gt;
   # Remove CCD file if it exists&lt;br /&gt;
   rm /etc/openvpn/ccd/clientname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;: The revoked certificate will be immediately rejected. The user will not be able to connect even if they still have the &amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
== Security Best Practices ==&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Use descriptive client names&amp;#039;&amp;#039;&amp;#039;: Use names that identify the device/user (e.g., &amp;lt;code&amp;gt;laptop-john&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;phone-mary&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nas-synology&amp;lt;/code&amp;gt;) =&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Regular certificate rotation&amp;#039;&amp;#039;&amp;#039;: Renew certificates before expiration (typically annually) =&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Revoke unused certificates&amp;#039;&amp;#039;&amp;#039;: Remove access for users who no longer need VPN access =&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Secure .ovpn file distribution&amp;#039;&amp;#039;&amp;#039;: Use secure channels (encrypted email, secure file transfer) when sending &amp;lt;code&amp;gt;.ovpn&amp;lt;/code&amp;gt; files to clients =&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Limit static IP assignments&amp;#039;&amp;#039;&amp;#039;: Only assign static IPs when necessary (e.g., for services like the Synology NAS) =&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Monitor active connections&amp;#039;&amp;#039;&amp;#039;: Regularly check who is connected and verify it&amp;#039;s expected =&lt;br /&gt;
&lt;br /&gt;
= &amp;#039;&amp;#039;&amp;#039;Keep Easy-RSA secure&amp;#039;&amp;#039;&amp;#039;: The Easy-RSA directory contains sensitive keys - restrict access: =&lt;br /&gt;
   &amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
   chmod 700 /etc/openvpn/server/easy-rsa/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup User Certificates ==&lt;br /&gt;
&lt;br /&gt;
Before making changes, backup user certificates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lang-bash&amp;quot;&amp;gt;&lt;br /&gt;
= Backup all certificates and keys =&lt;br /&gt;
tar -czf openvpn-users-backup-$(date +%Y%m%d).tar.gz \&lt;br /&gt;
  /etc/openvpn/server/easy-rsa/pki/ \&lt;br /&gt;
  /root/&amp;#039;&amp;#039;.ovpn \&lt;br /&gt;
  /etc/openvpn/ccd/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039; [Server Configuration](server-configuration.md) - Server setup&lt;br /&gt;
&amp;#039;&amp;#039; [Client Configuration](client-configuration.md) - Client setup&lt;br /&gt;
&amp;#039;&amp;#039; [Certificate Management](certificate-management.md) - Certificate details&lt;br /&gt;
&amp;#039;&amp;#039; [[Documentation:Index|Troubleshooting]] - User management troubleshooting&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Documentation/OpenVPN]]&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
</feed>