diff --git a/src/store/modules/normalizers.js b/src/store/modules/normalizers.js
index 5b7f6ff1328425c87526c1ac23f9123df3c9e540..3dc6d1a595972007932fd85c52261c73a08db6b0 100644
--- a/src/store/modules/normalizers.js
+++ b/src/store/modules/normalizers.js
@@ -3,8 +3,6 @@ const nonAtomsObjects = ['match_actor', ':match_actor']
 const objects = ['digest', 'pleroma_fe', 'masto_fe', 'poll_limits', 'styling']
 const objectParents = ['mascots']
 
-const groupWithoutKey = settings => settings._value ? settings._value[1] : false
-
 // REFACTOR
 export const parseTuples = (tuples, key) => {
   return tuples.reduce((accum, item) => {
@@ -88,8 +86,7 @@ export const partialUpdate = (group, key) => {
       (group === ':quack' && key === ':meta') ||
       (group === ':mime' && key === ':types') ||
       (group === ':auto_linker' && key === ':opts') ||
-      (group === ':swarm' && key === ':node_blacklist') ||
-      (group === ':cors_plug' && [':max_age', ':methods', ':expose', ':headers'].includes(key))) {
+      (group === ':swarm' && key === ':node_blacklist')) {
     return false
   }
   return true
@@ -110,7 +107,7 @@ export const valueHasTuples = (key, value) => {
 
 export const wrapUpdatedSettings = (group, settings) => {
   return Object.keys(settings).map((key) => {
-    const value = groupWithoutKey(settings[key]) || wrapValues(settings[key])
+    const value = settings[key]._value ? settings[key]._value[1] : wrapValues(settings[key])
     return { group, key, value }
   })
 }
@@ -133,6 +130,8 @@ const wrapValues = settings => {
     } else if (setting === ':ip') {
       const ip = value.split('.').map(s => parseInt(s, 10))
       return { 'tuple': [setting, { 'tuple': ip }] }
+    } else if (setting === ':ssl_options') {
+      return { 'tuple': [setting, wrapValues(value)] }
     } else {
       return { 'tuple': [setting, value] }
     }
diff --git a/src/views/settings/components/Http.vue b/src/views/settings/components/Http.vue
index 37100fbf7427ec931f8cbf18d59fb388894b91d8..03689a96a0695ec3136206cbc60efb936f36f541 100644
--- a/src/views/settings/components/Http.vue
+++ b/src/views/settings/components/Http.vue
@@ -59,7 +59,7 @@ export default {
       return this.settings.description.find(setting => setting.group === ':http_signatures')
     },
     httpSignaturesData() {
-      return this.settings.settings.http_signatures
+      return this.settings.settings[':http_signatures']
     },
     isMobile() {
       return this.$store.state.app.device === 'mobile'
diff --git a/src/views/settings/components/Inputs.vue b/src/views/settings/components/Inputs.vue
index b93f78945097a22e2f1a0e1e0d155bd3aa538ea8..17d3aacfda79a3075d4fad109221596e2615610e 100644
--- a/src/views/settings/components/Inputs.vue
+++ b/src/views/settings/components/Inputs.vue
@@ -11,7 +11,7 @@
       @change="update($event, settingGroup.group, settingGroup.key, settingParent, setting.key, setting.type, nested)"/>
     <el-input-number
       v-if="setting.type === 'integer'"
-      :value="inputValue"
+      :value="inputValue === null ? 0 : inputValue"
       :placeholder="setting.suggestions ? setting.suggestions[0].toString() : null"
       :min="0"
       size="large"
@@ -110,6 +110,7 @@
     <editable-keyword-input v-if="editableKeyword(setting.key, setting.type)" :data="data" :setting-group="settingGroup" :setting="setting"/>
     <icons-input v-if="setting.key === ':icons'" :data="data[':icons']" :setting-group="settingGroup" :setting="setting"/>
     <proxy-url-input v-if="setting.key === ':proxy_url'" :data="data[setting.key]" :setting-group="settingGroup" :setting="setting"/>
+    <ssl-options-input v-if="setting.key === ':ssl_options'" :setting-group="settingGroup" :setting-parent="settingParent" :setting="setting" :data="data" :nested="true" :custom-label-width="'100px'"/>
     <!-------------------->
     <p class="expl">{{ setting.description }}</p>
   </el-form-item>
@@ -119,7 +120,7 @@
 import AceEditor from 'vue2-ace-editor'
 import 'brace/mode/elixir'
 import 'default-passive-events'
-import { AutoLinkerInput, EditableKeywordInput, IconsInput, MascotsInput, ProxyUrlInput } from './inputComponents'
+import { AutoLinkerInput, EditableKeywordInput, IconsInput, MascotsInput, ProxyUrlInput, SslOptionsInput } from './inputComponents'
 
 export default {
   name: 'Inputs',
@@ -129,7 +130,8 @@ export default {
     EditableKeywordInput,
     IconsInput,
     MascotsInput,
-    ProxyUrlInput
+    ProxyUrlInput,
+    SslOptionsInput
   },
   props: {
     customLabelWidth: {
diff --git a/src/views/settings/components/inputComponents/SslOptionsInput.vue b/src/views/settings/components/inputComponents/SslOptionsInput.vue
new file mode 100644
index 0000000000000000000000000000000000000000..a613ee9ed0f74b72126a7c8a5d89c84a164c2ba9
--- /dev/null
+++ b/src/views/settings/components/inputComponents/SslOptionsInput.vue
@@ -0,0 +1,82 @@
+<template>
+  <div>
+    <div v-for="subSetting in setting.children" :key="subSetting.key">
+      <el-select
+        v-if="subSetting.type.includes('list') && subSetting.type.includes('atom')"
+        :value="data[setting.key][subSetting.key]"
+        multiple
+        filterable
+        allow-create
+        @change="update($event, subSetting.key)">
+        <el-option v-for="(option, index) in subSetting.suggestions" :key="index" :value="option"/>
+      </el-select>
+    </div>
+  </div>
+</template>
+
+<script>
+import Inputs from '../Inputs'
+
+export default {
+  name: 'SslOptionsInput',
+  components: {
+    Inputs
+  },
+  props: {
+    customLabelWidth: {
+      type: String,
+      default: function() {
+        return this.labelWidth
+      },
+      required: false
+    },
+    data: {
+      type: [Object, Array],
+      default: function() {
+        return {}
+      }
+    },
+    nested: {
+      type: Boolean,
+      default: function() {
+        return false
+      }
+    },
+    setting: {
+      type: Object,
+      default: function() {
+        return {}
+      }
+    },
+    settingGroup: {
+      type: Object,
+      default: function() {
+        return {}
+      }
+    },
+    settingParent: {
+      type: Object,
+      default: function() {
+        return {}
+      },
+      required: false
+    }
+  },
+  methods: {
+    inputValue(key) {
+      return this.data[this.setting.key][key]
+    },
+    update(value, key) {
+      const updatedState = { ...this.data, [this.setting.key]: { ...this.data[this.setting.key], [key]: value }}
+
+      this.$store.dispatch('UpdateSettings', { group: this.settingGroup.group, key: this.settingGroup.key, input: this.settingParent.key, value: updatedState, type: this.settingParent.type })
+      this.$store.dispatch('UpdateState', { group: this.settingGroup.group, key: this.settingGroup.key, input: this.settingParent.key, value: updatedState })
+    }
+  }
+}
+</script>
+
+<style rel='stylesheet/scss' lang='scss'>
+@import '../../styles/main';
+@include settings
+</style>
diff --git a/src/views/settings/components/inputComponents/index.js b/src/views/settings/components/inputComponents/index.js
index 7793db17e49544ccb150f2599a1d6b118b239145..ee14542326396c950a32119f9529fba87269da22 100644
--- a/src/views/settings/components/inputComponents/index.js
+++ b/src/views/settings/components/inputComponents/index.js
@@ -3,3 +3,4 @@ export { default as MascotsInput } from './MascotsInput'
 export { default as EditableKeywordInput } from './EditableKeywordInput'
 export { default as IconsInput } from './IconsInput'
 export { default as ProxyUrlInput } from './ProxyUrlInput'
+export { default as SslOptionsInput } from './SslOptionsInput'
diff --git a/src/views/settings/index.vue b/src/views/settings/index.vue
index 53e471e008d88ce993049a496073e629b268886c..61ad70d1d9b609bae3c0f6a9106b6226c6c92bf7 100644
--- a/src/views/settings/index.vue
+++ b/src/views/settings/index.vue
@@ -32,14 +32,13 @@
       <el-tab-pane :label="$t('settings.gopher')" lazy>
         <gopher/>
       </el-tab-pane>
+      <el-tab-pane :label="$t('settings.http')" lazy>
+        <http/>
+      </el-tab-pane>
       <el-tab-pane :label="$t('settings.instance')" name="instance">
         <instance/>
       </el-tab-pane>
       <!--
-      <el-tab-pane :label="$t('settings.http')" lazy>
-        <http/>
-      </el-tab-pane>
-
       <el-tab-pane :label="$t('settings.jobQueue')" lazy>
         <job-queue/>
       </el-tab-pane>